Spring Aop - 初识

  1. 常见名词解释

    • 通知、增强处理(Advice) : 代表你通过切面想要给目标方法添加的功能。常见的如:日志功能,方法用时。
    • 连接点(JoinPoint) : 代表通知可以增加的临界点,比如方法的执行前,执行后,方法抛出异常后等。代码可用连接点,获取目标对象,目标方法等信息。
    • 我理解它作为代理类的通知方法和目标类的目标方法的连接作用,起一个桥梁功能。各个切面应该都可以通过它获取目标类信息
    • 切点(PointCut):代表你要增强的目标方法,仅做表示
    • 切面(Aspect): 代表通知和切入点结合。
    • 目标对象(Target):代表你想要增强的类。
    • 目标方法: 被代理的方法,被切的方法。
  2. 官方文档execution表达式

    execution(modifiers-pattern? ret-type-pattern declaring-type-pattern? name-pattern(param-pattern)throws-pattern?)

    位置 表示 例子
    modifier-pattern 方法返回的类型 public, protected, private, *
    declaring-type-pattern 包或者类 com.app.service.* - 适用在此包下的类<br />com.app.service.UserService - 只适用此类
    name-pattern 方法名 set* - 适用以set开头的方法
    param-pattern 方法参数 .. - 任何数量的参数<br />java.lang.String - Sting类型的参数
    throws-pattern 方法抛出的异常
  3. 简单用法

此事例,建立在了解springboot简单基础知识基础上

1> 引入SpringAOP依赖

  • Spring AOP

    <!-- Spring AOP -->
    <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-aop</artifactId>
    </dependency>
    

2>简单认识,前置通知举例

  • 首先建切点

    /**
    * 切点
    */
    @Pointcut("execution(public * com.gold.aoptest.BeAopedService.doWork(..))")
    public void aspect(){}
    
  • 前置通知

    /**
    * 前置通知
    * @param joinPoint 连接点
    */
    @Before("execution(public * com.gold.aoptest.BeAopedService.doWork(..))")
    public void beforeMethod() {
       System.out.println("@Before 前置通知 start ...");
       System.out.println("@Before 前置通知 逻辑代码");
       System.out.println("@Before 前置通知 end ...);
    }
    

    解释:当你运行类BeAopedServicedoWork()方法开始是,会执行此前置通知方法beforeMethod()

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容