当bean中有AOP切点时getBean(class<T> args0) 无法获取bean,报错

在学AOP时getBean()获取bean时发生报错 No qualifying bean of type [com.spring.caculator.CaculatorImpl] is defined

public static void main(String args[]) {
	 //1.创建IOC容器
	 ApplicationContext  ac= new ClassPathXmlApplicationContext("AnncationContext.xml");
	 //2.获取IOC容器中的bean实例
	 Caculator c = ac.getBean(CaculatorImpl.class);
	 //3.使用bean

 }

在这里插入图片描述经过尝试发现
通过名字获取getBean(“caculatorImp”);
以及通过接口类型获取getBean(Caculator.class)
都不会报错,但不知道原因
后来在一篇遇到相同问题的博客上找到原因,转载研究原文连接

造成问题的原因是要获取的bean 中 有被切入的方法。 就是可能该类会使用反射生成一个类。。
为什么 byTpe 无法获取bean ,因为它的类型根本就不是为什么 byTpe 无法获取bean ,因为它的类型根本就不是 com.spring.caculator.CaculatorImpl 而是 com.sun.proxy.$Proxy,至于为什么被 切 的 类 在spring 容器中的 type 变了, 那可能要考虑代理反射,可能是 spring 默认使用jdk 动态代理,这种方式会生成一个全新的类
在这里插入图片描述

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值