如果我想在构造函数依赖注入上使用注释@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))
添加限定符?
答案 0 :(得分:2)
您可以使用spring技巧来限定字段,方法是将字段命名为所需的带有@Qualifier批注的限定符。
@RequiredArgsConstructor
public class ValidationController {
//@Qualifier("xmlFormValidator")
private final Validator xmlFormValidator;
答案 1 :(得分:0)
对我来说似乎是
@RequiredArgsConstructor(onConstructor=@__(@Autowired))
也在工作(可能我正在使用更新的lombok?)
答案 2 :(得分:0)
我还没有测试接受的答案是否运作良好,但是我认为不是创建或编辑lombok的配置文件,更干净的方法是将成员变量重命名为要限定的名称。
// 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;
}