AOP概述
AOP中的名词
Spring2.0版本前的AOP
-
小试牛刀AOP
-
Spring中的通知
-
RegexpMethodPointcutAdvisor切入点和通知类关联使用
-
给目标类新增接口
-
JDK代理和CGLib代理都是动态代理
-
一次生成多个代理对象
-
根据切入点生成代理对象
-
编程方式创建代理对象
-
TargetSource
AspectJ风格的SpringAOP
真正的AspectJ编译器
本类调用为什么会失效
AspectJ编译器体验
AOP概述
AOP要做的是将业务代码和功能代码分开实现。例如,一个类中的一个方法要往数据库添加一条数据,删除一条数据。这两个业务操作,都用得上事务管理。那么将事务管理抽取出一个类,类里的方法就是开启事务,提交事务,和回滚事务。AOP负责将事务代码和业务代码无缝结合在一块。
AOP中的名词
通知(Advice):通常我们要对目标类的某个方法进行增强。可以增强的点有方法执行前,后,异常后,finally中,或者前后一块(环绕)。
目标类(Target):业务类。通知就是要和目标类中的方法结合的。
连接点(JoinPoint):一个类的每个方法都可以被增强,这些方法就是连接点。
切入点(Pointcut):切入点匹配器,通常是execution表达式。被匹配到的具体方法,就是切入点。
引入(Introduction):spring允许对一个bean动态的实现一个接口。
代理(Proxy):实现AOP操作的方法就是通过代理,通过创建一个目标类的代理对象,在代理对象里对目标类增强。
切面(Aspect):切入点和通知的类方法结合的过程就是切面。
织入(Weaving):创建代理对象的这个过程就是织入。
Spring2.0前的AOP
1 小试牛刀AOP
package springcode.aop.spring;/* * @auther 顶风少年 * @mail dfsn19970313@foxmail.com * @date 2020-01-25 18:54 * @notify 通知类 * @version 1.0 */ import org.springframework.aop.MethodBeforeAdvice; import java.lang.reflect.Method; public class BeforeAdvice implements MethodBeforeAdvice { @Override public void before(Method method, Object[] objects, Object o) throws Throwable { System.out.println("我是BeforeAdvice"); } }