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(){
}