AOP
1.AOP
1.1. JDK动态代理
代理目标是接口--实现类的形式。如下形式:
代理后生成UserService接口的代理实现类。
测试:
1.2. CGLIB动态代理
CGLIB可以对普通类做动态代理,但目标类不能是final,目标类里面的方法也不能是final
测试:
1.3. spring的注解形式AOP
配置.xml文件aop标签提示:
1) 切面定义,创建一个类,在其上加上@Aspect注解
(1) @Before,前置通知
前置通知因为不能控制目标方法不继续执行,所以不适合用来做方法执行前的判断,应使用环绕通知。
(2) @After后置通知:
(3) @AfterReturning返回通知
对业务方法的返回值进行处理
(4) @AfterThrowing例外通知
主要用在运行期监控,获得项目的异常信息。
(5) @Around环绕通知(常用):
可以实现前置通知,后置通知,返回通知,例外通知的所有功能
获得目标对象,通过模拟用户是否为null判断:
1.4. spring的配置文件形式AOP
1)切面类:
2) 配置文件:
(1) 连接点(joinPoint):要拦截的方法
(2) 切点(pointcut):通知作用的范围
(3) 通知(advice):横切性关注点,在连接点前后或异常情况来做的事情,前置通知,后置通知,返回通知,例外通知,环绕通知
(4)切面(Aspect):横切性关注点(advice)的集合。
(5)目标对象(target):代理的目标对象
(6)织入(weave):切面应用到target对象并且导致proxy对象创建的过程叫织入。