0
点赞
收藏
分享

微信扫一扫

使用@RequiredArgsConstructor注入时@Qualifier失效问题

书坊尚 2023-06-30 阅读 109

在一个项目中,使用到了 Lombok 的@RequiredArgsConstructor注解来注入对象

@Service
@RequiredArgsConstructor
public class DeliveryServiceImpl implements DeliveryService {
    private final ResourceDao resourceDao;
}

因为ResourceDao接口有两个实现类

@Repository("XxxResourceDao")
public class XxxResourceDao implements ResourceDao {...}
@Repository("YyyResourceDao")
public class YyyResourceDaoimplements ResourceDao {...}

分别用XxxResourceDaoYyyResourceDao来命名

本想配合@Qualifier注解来做注入时区分

@Service
@RequiredArgsConstructor
public class DeliveryServiceImpl implements DeliveryService {
	@Qualifier("XxxResourceDao")
    private final ResourceDao resourceDao;
}

但是发现报错:

说找到了两个Bean,不知道注入哪一个
这种情况说明@Qualifier注解失效了

其实在IDEA中也有提示:
在这里插入图片描述

解决办法:
在项目根目录下创建一个lombok.config文件
在这里插入图片描述
然后在里面添加一项配置:把@Qualifier添加进允许复制的注解列表中

lombok.copyableAnnotations += org.springframework.beans.factory.annotation.Qualifier

然后删除target文件或者mvn clean一下,重新构建一下项目即可。

举报

相关推荐

0 条评论