lombok 不会将注解 'org.springframework.beans.factory.annotation.Qualifier' 复制到构造函数中
在物联网项目添加新的厂家时,一开始提示存在多个相同的 service 实现,无法注入。在添加了修饰词 Qualifier("hdMsgRecvService")
之后,不再报错,但提醒 lombok 不会将注解 'org.springframework.beans.factory.annotation.Qualifier' 复制到构造函数中
。
百度了解到,原来是 @RequiredArgsConstructor
注解与 Qualifier("hdMsgRecvService")
功能冲突了。当然这只是一个警告,并不影响程序运行。
@RequiredArgsConstructor
会根据 private final Class class
这样的不可变的参数,生成构造函数,通过构造函数注入这些服务。
Qualifier("hdMsgRecvService")
是在服务使用统一接口时,标记实例化的是那个类,与 @Service("hdMsgRecvService")
配合使用。
# 实现类
@Service("hdMsgRecvService")
# 注入服务
{
@Autowired
@Qualifier("hdMsgRecvService")
private DeviceMsgRecvService deviceService;
既然已经使用了 @RequiredArgsConstructor
构造函数注入方式,且与这个修饰词注解冲突,直接去掉肯定会报错,可以将实现类直接作为参数类型,这样实现类明确了,也就不需要修饰词标注了。
@RequiredArgsConstructor
public class xxController
{
private final HDDeviceMsgSendServiceImpl hdSendService;
另外还可以添加 lombok 配置来解决:使用@RequiredArgsConstructor注入时@Qualifier失效问题,这也是一种解决方法。
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。