@RequiredArgsConstructor(onConstructor = @_(@Autowired)에 수식자를 추가할 수 있습니까?
주석을 사용하려면@Qualifier
컨스트럭터 의존성 주입에서는 다음과 같은 것을 얻을 수 있습니다.
public class Example {
private final ComponentExample component;
@Autowired
public Example(@Qualifier("someComponent") ComponentExample component) {
this.component = component;
}
}
보일러 플레이트 코드를 줄이기 위한 Lombok의 주석을 알고 있으며, 컨스트럭터를 포함할 필요가 없습니다.@RequiredArgsConstructors(onConstructor=@__(@Inject))
그러나 이것은 한정자가 없는 속성에서만 작동합니다.
에 수식자를 추가할 수 있는지 아는 사람이 있나요?@RequiredArgsConstructor(onConstructor = @__(@Autowired))
?
편집:
드디어 그렇게 할 수 있게 되었습니다!다음과 같이 서비스를 정의할 수 있습니다.
@Service
@RequiredArgsConstructor
public class SomeRouterService {
@NonNull private final DispatcherService dispatcherService;
@Qualifier("someDestination1") @NonNull private final SomeDestination someDestination1;
@Qualifier("someDestination2") @NonNull private final SomeDestination someDestination2;
public void onMessage(Message message) {
//..some code to route stuff based on something to either destination1 or destination2
}
}
프로젝트의 루트에 다음과 같은 lombok.config 파일이 있는 경우:
# Copy the Qualifier annotation from the instance variables to the constructor
# see https://github.com/rzwitserloot/lombok/issues/745
lombok.copyableAnnotations += org.springframework.beans.factory.annotation.Qualifier
이것은 최근 lombok 1.18.4에 소개되어 블로그 포스트에 기재되어 있으며, 제가 이 기능의 구현을 추진하는 주된 원동력 중 하나였다고 자부합니다.
- 문제가 상세하게 논의되는 블로그 게시물
- github의 원호
- 그리고 작은 기트허브 프로젝트를 통해 실제 가동 상황을 확인할 수 있습니다.
스프링 트릭을 사용하여 @Qualifier 주석 없이 원하는 한정자를 사용하여 필드에 이름을 지정할 수 있습니다.
@RequiredArgsConstructor
public class ValidationController {
//@Qualifier("xmlFormValidator")
private final Validator xmlFormValidator;
수락된 답변이 잘 작동하는지 테스트하지 않았지만, 롬복의 설정 파일을 작성하거나 편집하는 대신 수식자 이름을 원하는 멤버 변수 이름으로 바꾸는 것이 더 깔끔한 방법이라고 생각합니다.
// Error code without edit lombok config
@Service
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class Foo {
@Qualifier("anotherDao") UserDao userDao;
}
@Qualifier를 제거하고 변수 이름을 변경하기만 하면 됩니다.
// Works well
@Service
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class Foo {
UserDao anotherDao;
}
언급URL : https://stackoverflow.com/questions/38549657/is-it-possible-to-add-qualifiers-in-requiredargsconstructoronconstructor
'source' 카테고리의 다른 글
MongoDB에서 컬렉션을 CSV로 내보내려면 어떻게 해야 합니까? (0) | 2023.03.25 |
---|---|
AngularJS 글로벌http 폴링 서비스 (0) | 2023.03.20 |
구문 분석하기 전에 문자열이 유효한 json인지 확인하시겠습니까? (0) | 2023.03.20 |
WordPress MVC는 호환됩니까? (0) | 2023.03.20 |
AngularJs - 스코프에서 동적 스코프 변수 설정 (0) | 2023.03.20 |