美文网首页
SpringBoot(31) — 多切面编程

SpringBoot(31) — 多切面编程

作者: 奔跑的佩恩 | 来源:发表于2021-09-07 10:21 被阅读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代码:

    相关文章

      网友评论

          本文标题:SpringBoot(31) — 多切面编程

          本文链接:https://www.haomeiwen.com/subject/zmpuwltx.html