programing

@값 필드, 롬복 및 생성자 주입에 대한 모범 사례?

stoneblock 2023. 8. 27. 08:50

@값 필드, 롬복 및 생성자 주입에 대한 모범 사례?

저는 자바 스프링 애플리케이션을 개발하고 있습니다.응용프로그램에 .yml 구성 파일을 사용하여 구성된 일부 필드가 있습니다.해당 필드에 @Value 주석을 사용하여 해당 값을 가져오려고 합니다.저도 현장 주입보다는 시공자 주입이라는 베스트 프랙티스를 사용하고 싶지만 수동보다는 롬복을 사용하여 시공자를 작성하고 싶습니다.이 모든 것을 한 번에 할 수 있는 방법이 있습니까?예를 들어, 이것은 작동하지 않지만 내가 하고 싶은 것과 유사합니다.

@AllArgsConstructor
public class my service {
    @Value("${my.config.value}")
    private String myField;

    private Object myDependency;

    ...
}

이 경우, 제가 원하는 것은 롬복이 제 의존성만 설정하는 생성자를 생성하고 제 구성 파일에서 myField를 읽도록 하는 것입니다.

감사합니다!

필요합니다@RequiredArgsConstructor와 마크myDependency최종적으로이 경우 Lombok은 인수로 '필수' 최종 필드를 기반으로 생성자를 생성합니다. 예:

@RequiredArgsConstructor
@Service
public class MyService {

    @Value("${my.config.value}")
    private String myField;

    private final MyComponent myComponent;

    //...
}

이는 다음과 같습니다.

@Service
public class MyService {

    @Value("${my.config.value}")
    private String myField;

    private final MyComponent myComponent;

    public MyService(MyComponent myComponent) { // <= implicit injection
        this.myComponent = myComponent;
    } 

    //...
}

여기에는 생성자가 하나뿐이므로 스프링 주입MyComponent 주석을 명시적으로 사용하지 않습니다.

롬복 버전 1.18.4 이상을 사용하고 있는지 확인합니다.원하는 주석을 lombok.config 파일에 추가해야 합니다.

lombok.copyableAnnotations += org.springframework.beans.factory.annotation.Value

강의 내용은 다음과 같습니다.

@AllArgsConstructor(onConstructor = @__(@Autowired))
public class MyService{

    @Value("${my.config.value}")
    private String myField;

    private Object myDependency;
}

다음은 롬복 생성 클래스입니다.

public class MyService {

@Value("${my.config.value}")
private String myField;

private Object myDependency;

@Autowired
@Generated
public MyService(@Value("${my.config.value}") final String myField, final Object myDependency) {
    this.myField = myField;
    this.myDependency = myDependency;
}

PS: /src/main/java 폴더 아래에 lombok.config 파일이 있는지 확인합니다./src/main/resources에 추가하려고 했지만 작동하지 않았습니다.

Lombok에서 가져온 응답 - 생성자 입력 매개 변수에 필드의 주석을 유지합니다.

언급URL : https://stackoverflow.com/questions/52321988/best-practice-for-value-fields-lombok-and-constructor-injection