spring注入的对象是本身吗
直接上结论
1 spring在没有使用aop的时候,注入的是就是对象本身。
2 spring很多功能都是通过aop来实现,如果事务,缓存注解,异步、还有一些自定义的aop等等,而aop是通过动态代理来实现的,spring主要用到的动态代理有jdk的动态代理和cglib。
3 若被代理的对象实现的接口,则是jdk代理,否则是cglib代理。
4 若是aop spring注入的时候需要注入接口
经常我们遇到的事务生效或者异步未生效,其中部分原因就是在同一个类中去调用有注解的方法,这样就相当于this.method().走的不是代理对象,所以注解没生效
注解未生效示例:
public void methodA(){
methodB();
}
@Async
public void methodB(){
}
本文探讨了Spring框架中对象注入的原理,指出在不使用AOP时,注入的对象为实际实例。同时,详细解释了Spring如何通过JDK动态代理和CGLIB实现AOP,特别是当对象实现接口时采用JDK代理,否则使用CGLIB。文章还强调了在类内部调用注解方法可能导致事务或异步失效的情况,并提供了示例代码进行说明。
173万+

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



