当前位置:  开发笔记 > 编程语言 > 正文

是否可以在@RequiredArgsConstructor中添加限定符(onConstructor = @__(@ Autowired))?

如何解决《是否可以在@RequiredArgsConstructor中添加限定符(onConstructor=@__(@Autowired))?》经验,为你挑选了1个好方法。

如果我想@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))



1> Nikola Yovch..:

编辑:

这是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项目,可以看到它的实际应用

推荐阅读
wurtjq
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有