Spring系列(四):Spring AOP详解

  AOP(面向切面编程),可以说是一种编程思想,其中的Spring AOP和AspectJ都是现实了这种编程思想。相对OOP(面向过程编程)来说,提供了另外一种编程方式,对于OOP过程中产生的横切性问题,这些横切性与业务无关,可以通过预编译方式和运行期动态代理来实现。比如可以应用在:日志记录、性能监控、事务管理等。

二、AOP的基本概念

  Aspect(切面):通常来说是一个类,里面定义了切点和通知,Spring AOP中可以用@AspectJ来标注这个类是切面;

  Join point(连接点):可以理解成目标对象中的方法,该方法是要被增强的方法,也就是我们要作用的一个切入点;

  Pointcut(切点):切点可以理解成连接点的集合;

  Target object(目标对象):被代理的对象,也就是目标对象;

  AOP proxy(代理对象):把被代理的对象织入了增强后的对象;

  Weaving(织入):把增强也就是代理逻辑加入到目标对象上的过程;

  Advice(通知):用于指定在特定连接点上的增强的位置;

    ① Before advice(前置通知):在目标方法被调用之前调用通知;

    ② After returning advice(返回通知):在目标方法成功执行之后调用通知;

    ③ After throwing advice(异常通知):在目标方法抛出异常后调用通知;

    ④ After (finally) advice(后置通知):在目标方法完成之后调用通知(不论是否出现异常都会执行,finally中调用);

    ⑤ Around advice(环绕通知):围绕连接点(目标方法)的通知。可以在方法调用前后执行自定义行为;

三、代理的实现方式

  我们知道AOP可以通过预编译的方式和运行期动态代理来实现,那么代理的实现方式有哪些呢?

  我们定义一个接口类:UserService

package com.toby.service; /** * @desc: user 业务接口类 * @author: toby * @date: 2019/8/4 23:28 */ public interface UserService { /** * 添加 */ void add(); /** * say hello * @param name * @return */ String say(String name); }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwxsss.html