spring事务和aop的原理
AOPspringAop大体分为两种技术方式,一种是基于动态代理的,一种是基于字节码增强的
动态代理的有基于
jdk的
基于CGLIB的
字节码增强的有
在编译时做增强的
class加载的时候做增强的
12345678910111213public enum AdviceMode { /** * JDK proxy-based advice. */ PROXY, /** * AspectJ weaving-based advice. */ ASPECTJ}
基于动态代理-PROXYAbstractAutoProxyCreator它是个抽象类,并且是bean的后置处理器,在bean创建的时候拦截,并寻找合适的切入点返回对应的proxy其中有3个实现类
InfrastructureAdvisorAutoProxyCreator如果只是开启事务则会用到此实现AOP生效规则:bean必须是Advisor类型,且role为BeanDefinition.ROLE_INFRASTRUCTURE才会生效
AspectJAwareAdviso ...