AOP

 1.AOP

AOP

1.1.       JDK动态代理

代理目标是接口--实现类的形式。如下形式:

AOP

代理后生成UserService接口的代理实现类。

AOP

AOP

测试:

AOP

1.2.       CGLIB动态代理

CGLIB可以对普通类做动态代理,但目标类不能是final,目标类里面的方法也不能是final

AOP

AOP

测试:

AOP

1.3.       spring的注解形式AOP

 

配置.xml文件aop标签提示:

AOP

1)  切面定义,创建一个类,在其上加上@Aspect注解

(1)  @Before,前置通知

前置通知因为不能控制目标方法不继续执行,所以不适合用来做方法执行前的判断,应使用环绕通知。

AOP

AOP

(2)  @After后置通知:

AOP

(3)  @AfterReturning返回通知

对业务方法的返回值进行处理

AOP

(4)  @AfterThrowing例外通知

主要用在运行期监控,获得项目的异常信息。

AOP

(5)  @Around环绕通知(常用):

可以实现前置通知,后置通知,返回通知,例外通知的所有功能

AOP

获得目标对象,通过模拟用户是否为null判断:

AOP

1.4.       spring的配置文件形式AOP

1)切面类:

AOP

AOP

2)  配置文件:

AOP

AOP

AOP

(1)      连接点(joinPoint):要拦截的方法

(2)      切点(pointcut):通知作用的范围

(3)      通知(advice):横切性关注点,在连接点前后或异常情况来做的事情,前置通知,后置通知,返回通知,例外通知,环绕通知

(4)切面(Aspect):横切性关注点(advice)的集合。

(5)目标对象(target):代理的目标对象

(6)织入(weave):切面应用到target对象并且导致proxy对象创建的过程叫织入。