Spring管理实务使用aop 对事务进行处理,方法前开启事务,方法后提交事务,aop使用动态代理生成代理对象调用的
内部方法this调用不起作用,应该用代理对象去调用
spring中获取代理对象的三种方式:
- 直接autowire;
- autowire applicationcontext,通过context.getbean获取代理对象;
- 通过aopcontext.currentproxy(源码里其实就是从ThreadLocal中获取,注解中开启exposeproxy设置true后,会把代理放入线程本地变量)方法获取(注意:需要启动类上增加注解@enableaspectjautoproxy(exposeproxy=true));
如果spring启动时循环依赖导致报错,可以通过依赖注入属性增加@lazy注解解决。