bean注入失败的几种情况和解决思路:NoSuchBeanDefinitionException: No qualifying bean of type

bean注入失败,无非是两种情况,要么注入的写法出错,要么被注入的Bean未定义。

1.Bean未定义

如果是直接在XML中配置bean标签的时候

检查id和class是否写对

如果是用注解形式申明Bean

先检查@Controller、@Service、@Repository、 @Component 是否加上其中的一个,
再检查包扫描的路径是否包含有这个类,
再检查配置文件是否在web.xml中有配置,这个可以在项目的启动日志中看到,出现类似Loading XML bean definitions from class path resource [spring-config.xml]的日志,就代表spring-config.xml被启动加载到了。

2.注入写法出错

如果引用都是类名的首字母小写,并且类都是唯一的,那么直接用@Autowired注入
如果出现相同类名,不同实现,需要不同的Name区分的,
比如:
@Resource(name=“userServiceForNew”)
@Resource(name=“userServiceForOld”)
userServiceForNew和userServiceForNew就对于不同bean的id
比如多数据源,j就对于多个不同的sqlSessionFactory,注入的时候就可以用id区分,byName注入

简单说下@Resource和@Autowired的区别

对于一般的Bean注入,用哪个都行
默认@Autowired是按类型type自动注入
默认@Resource是按名字byName自动注入,也可以指定type注入
@Autowired是Spring提供的注解
@Resource是J2EE提供的注解
还有@Qualifier,@Inject等注入的注解,个人认为可以忘记了,记住@Autowired和@Autowired就好了。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值