关注点分离:不同问题交给不同点去解决
面向切面编程AOP正是此技术的体现
通用化功能代码的实现,对应的就是所谓的切面(Aspect )
业务功能代码和切面代码分开后,架构将变得高内聚低耦合
确保功能的完整性:切面最终需要被合并到业务中( Weave )
AOP的主要名词概念
Aspect:通用功能的代码实现
Target :被织入Aspect的对象
Join Point :可以作为切入点的机会,所有方法都可以作为切入点
Pointcut : Aspect实际被应用在的Join Point ,支持正则
Advice:类里的方法以及这个方法如何织入到目标方法的方式
Weaving:Aop的实现过程
Advice的种类
前置通知( Before)
后置通知(AfterReturning )
异常通知( AfterThrowing )
最终通知( After )
环绕通知(Arount)
AOP的实现: JdkProxy和Cglib
由AopProxyFactory根据AdvisedSupport对象的配置来决定
默认策略如果目标类是接口,则用JDKProxy来实现,否则用后者
JDKProxy的核心: InvocationHandler接口和Pгoxy类
Cglib :以继承的方式态生成目标类的代理!
AOP的实现: JdkProxy和CglibJDKProxy
:通过Java的内部反射机制实现
Cglib :借助ASM实现
反射机制在生成类的过程中比较高效
ASM在生成类之后的执行过程中比较高效
,代理模式:接口+真实实现类+代理类