Advice (通知): 定义在链接点作什么,为切面加强提供织入接口spa
Pointcut (切点):决定Advice通知应该做用于哪一个链接点,对加强的方法的过滤代理
Advisor (通知器):定义应该使用 哪一个Advice 并在哪一个Pointcut 使用它,把Advice 和 Pointcut 结合起来对象
以上概念的具体体现:
继承
Advice 继承体系 ,以 BeforeAdvice,AfterAdvice 为例接口
Pointcut 继承体系,以 JdkRegexpMethodPointcut 为例get
Advisor 继承体系,以 DefaultPointcutAdvisor 为例it
以 ProxyFactoryBean 为例io
ProxyFactoryBean 配置 配置
1. 定义Advisor 使用的通知器方法
2. 定义ProxyFactoryBean 属性有
proxyInterfaces 代理接口
interceptorNames 通知器
target 目标加强的对象
为Proxy代理对象配置Advisor initializeAdvisorChain
得到代理对象 getSingletonInstance
AopProxyFactory 生成 AopProxy ,两个实现
AopProxy 代理对象 如何发挥拦截做用和实现AOP功能的?
AOP是怎样对目标对象加强的?
ReflectiveMethodInvocation proceed 会逐个运行拦截器的拦截方法,若是运行到拦截器尾,直接调用目标对象的实现方法,不然,沿着拦截器继续进行,获得下一个拦截器,经过这个拦截器进行mathes判断是否适用于横切加强的场合。若是是,从拦截器中获得通知器,并启动通知器的invoke方法进行切面加强,在这个过程结束后,会迭代调用proceed方法。