SpringBoot(31) — 多切面编程

2021-09-07  本文已影响0人  奔跑的佩恩

前言

在上篇我们介绍了AOP切边的增强注解@DeclareParents,可以在对原有方法进行切面处理之前做一些准备阶段的处理。大家有兴趣的话可参考
SpringBoot(30) — 切面引入增强@DeclareParents
之前几篇文章讲的都是一个切面对于方法上的处理。但有时候,我们监听一个方法的时候,要多方面,不同角度的做处理。特别是打log的时候,需要在某些条件下显示这方面信息的log,在那种条件下,我只想让该方法显示那一方面的log信息。这时,我们就可以对该方法进行对维度切面,即多切面编程

今天涉及到的知识有:

  1. 切面库引入依赖
  2. 准备切入点方法
  3. 多切面编程
  4. 测试

先来波测试结果:

======我是测试啊=====
=====before...1==
=====before...2==
=====before...3==
======我是要打印的信息啊: 大家好
=====after...3==
=====after...2==
=====after...1==

一. 切面库引入依赖

使用SpringBootAOP切面,我们需要在pom.xml中添加AOP相关依赖:

        <!-- Aop切面依赖 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-aop</artifactId>
            <version>2.2.6.RELEASE</version>
        </dependency>

大家也可参看SpringBoot(28) — AOP切面编程

二. 准备切入点方法

先准备一个需要被切面监听的方法接口类Iprinter:

public interface Iprinter {

    void printInfo(String message,int code);
}

然后Iprinter的实现类Printer:

@Component("Printer")
public class Printer implements Iprinter {

    @Override
    public void printInfo(String message, int code) {
        LogUtil.println("======我是要打印的信息啊: " + message);
    }
}

接下来,我们将为Printer类的printInfo(String message, int code)建立不同切面。

三. 多切面编程

我们知道,SpringBootAOP的作用域是加载到IoC容器中的Bean的方法上。自定义切面需要用到注解@Aspect。作为一个切面也是要加载到IoC容器中的。但作为切面,有一个特殊性,就是有了注解@Aspect,不需要另外添加@Component作为加载到容器的标志了。
ok,话不多说,先来写三个自定义切面CustomAspect1CustomAspect2CustomAspect3
先看下CustomAspect1代码:

上一篇下一篇

猜你喜欢

热点阅读