如果我想@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))
?
编辑:
这是FINALLY 可能的这样做!您可以拥有如下定义的服务:
@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上的原始问题
还有一个小型的github项目,可以看到它的实际应用