当其他包存在与注入接口同名的类时,使用@Resource注解注入报错

从大学接触项目开始就一直使用@Resource注解,因为它属于Java核心包,使用它可以降低与spring框架的耦合,个人觉得它比@Autowired更强大。

@Resource默认按名称注入,取名之后通过@Resource(name = “定义的名称”)注入,也可通过@Resource(type = com.zdky.tpl.common.service.FileInfoServiceImpl.class)注入,用的比较少。

注入的顺序:

1、@Resource同时指定name和type,则从Spring上下文中找到唯一匹配的bean注入,如果找不到就抛出异常。
2、@Resource仅指定name,就从Spring上下文中查找name进行注入(name就是被注入bean的id,如@Service(“demo”)注解中的"demo"),找不到就抛出异常。
3、@Resource仅指定type,就从Spring上下文中查找type进行注入(type就是被注入bean的全类名的.class,如加了@Service注解的全类名),找不到或者找到多个都会抛出异常。
4、如果@Resource既没指定name,也没指定type就按默认的方式注入(通过名称进行注入,即name,默认为被注入bean的小驼峰命名法的字符),如果找不到,就通过type进行查找,没找到或者找到多个就抛出异常。

一般情况下都是使用@Resource默认的用法,只有出现冲突时才会使用name和type。

今天使用@Resource注入bean,因为存在与注入的接口同名的类,报了如下的错:
在这里插入图片描述
解决办法:

1、@Resource配置name,name值为接口实现类的小驼峰命名。
2、使用@Autowired注解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值