刚开始学习Spring,在练习动态代理的时候会报com.sun.proxy.$Proxy0 cannot be cast to 的错误。在仔细查看之后才发现自己在注入接口的时候出现了错误,更正为

之后,问题就解决了。
Spring AOP的底层就是通过JDK动态代理或CGLib动态代理技术 为目标Bean执行横向织入
1.若目标对象实现了若干接口,spring使用JDK的java.lang.reflect.Proxy类代理。
2.若目标对象没有实现任何接口,spring使用CGLIB库生成目标对象的子类。
标记为final的方法,不能被代理,因为无法进行覆盖
JDK动态代理,是针对接口生成子类,接口中方法不能使用final修饰
CGLib 是针对目标类生产子类,因此类或方法 不能使final的
本文探讨了在Spring框架中使用AOP功能时遇到的动态代理错误,并详细介绍了如何正确地实现接口注入来避免此类问题。同时,还介绍了Spring AOP在不同情况下选择JDK动态代理或CGLIB动态代理的机制。
2632

被折叠的 条评论
为什么被折叠?



