java - tutorial - ¿Es posible agregar calificadores en @RequiredArgsConstructor(onConstructor=@__(@ Autowired))?
lombok tutorial (3)
Si quisiera usar la anotación @Qualifier
en una inyección de dependencia del constructor, tendría algo como lo siguiente:
public class Example {
private final ComponentExample component;
@Autowired
public Example(@Qualifier("someComponent") ComponentExample component) {
this.component = component;
}
}
Sé que la anotación de lombok para reducir el código de la @RequiredArgsConstructors(onConstructor=@__(@Inject))
y no tengo que incluir un constructor sería la siguiente: @RequiredArgsConstructors(onConstructor=@__(@Inject))
pero esto solo funciona con propiedades sin calificadores.
¿Alguien sabe si es posible agregar calificadores en @RequiredArgsConstructor(onConstructor = @__(@Autowired))
?
A mi me parece el
@RequiredArgsConstructor(onConstructor=@__(@Autowired))
está funcionando también (probablemente estoy usando lombok más reciente?)
Puede usar el truco de primavera para calificar el campo nombrándolo con el calificador deseado sin la anotación de @Qualifier.
@RequiredArgsConstructor
public class ValidationController {
//@Qualifier("xmlFormValidator")
private final Validator xmlFormValidator;
EDITAR:
¡ FINALMENTE ES POSIBLE hacerlo! Puedes tener un servicio definido así:
@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
}
}
Siempre que tenga un archivo lombok.config como este en la raíz del proyecto:
# 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
Esto se introdujo recientemente en el último lombok 1.18.4, lo escribí en mi blog, y me enorgullece decir que fui uno de los principales impulsores que impulsaron la implementación de la función.
- La entrada del blog donde se discute el tema en detalle.
- La github.com/rzwitserloot/lombok/issues/745 original github.com/rzwitserloot/lombok/issues/745
- Y un pequeño proyecto de github para verlo en acción.