是否可以在@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)) 中添加限定词吗?

原文由 Pau 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 940
2 个回答

编辑:

终于可能 这样做了!您可以像这样定义服务:

 @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 中引入的,我在我的博文中写过,我很自豪地说我是推动该功能实现的主要推动力之一。

原文由 Nikola Yovchev 发布,翻译遵循 CC BY-SA 4.0 许可协议

您可以使用 spring 技巧通过使用没有 @Qualifier 注释的所需限定符命名它来限定字段。

 @RequiredArgsConstructor
public class ValidationController {

  //@Qualifier("xmlFormValidator")
    private final Validator xmlFormValidator;

原文由 Алексей Виноградов 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题