老师,我在编写自研框架时,使用JDK动态代理生成代理类的话,在进行IOC时会报错
来源:9-11 实现自研框架AOP1.0(四)
![](http://img1.sycdn.imooc.com/user/5b8ce3ce0001ebc402000200-100-100.jpg)
weixin_慕仙6522334
2020-09-20
老师,我在编写自研框架时,使用JDK动态代理生成代理类完成逻辑织入后,下一步进行IOC时会报错。
java.lang.IllegalArgumentException: Can not set com.zjc.shop.service.RegisterService field com.zjc.shop.controller.UserController.registerService to com.sun.proxy.$Proxy16
我debug了一下发现是因为在aspect的织入逻辑中把容器里面被代理的bean替换成了代理类的bean,但是key还是被代理类class的,因此在进行IOC时会获取到被代理类的Filed字段进行依赖注入,但是代理类的bean好像没有了成员变量,所以报错。想请教一下老师,Spring框架中是如何解决这个问题的?
写回答
2回答
-
同学好,能否举例说明一下,没太明白同学的意思呢,是说自己引用了自己么 ,有没有相关的代码?
00 -
weixin_慕仙6522334
提问者
2020-09-21
我有一个bean UserServiceImpl,它需要注入另外一个bean UserMapper
在AOP的时候我使用代理类的bean Proxy$UserServiceImpl替换了被代理类的bean UserServiceImpl
最后进行IOC的依赖注入(DI)的时候出错。因为我使用jdk动态代理生成的bean Proxy$UserServiceImpl没有了UserMapper成员变量。
032023-03-07
相似问题