spring注入失败分析
问题阐述:
自动注入以实现类方式注入,启动报错:
nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.dimeng.p2p.common.repayment.service.RepaymentServiceImpl] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
问题分析:
SpringAop动态代理引起的
1)默认情况下,Spring使用基于接口的代理
a)如果Bean类有实现接口,那么Spring自动使用基于接口的代理创建Bean的代理实例
b)如果Bean类没有实现接口,那么则使用基于子类扩展的动态代理(即CGLib代理)
解决办法:
<aop:config proxy-target-class="true"> (其中一种)
关于动态代理的Demo
1.定义一个Subject接口
2.接口的实现类
3.定义动态代理类
4.Client类
结果展示:
参考文章:http://www.iteye.com/topic/1131444
https://blog.****.net/bingogirl/article/details/52304094