1 Star 0 Fork 0

xsyzer / SpringBoot整合AOP-Demo

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

AOP

  1. 依赖

            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-aop</artifactId>
            </dependency>
  2. 底层原理

    两种动态代理:

    1. 有接口 使用JDK动态代理

      • 创建接口实现类代理对象,增强类的方法

      image-20201227111601714

    2. 无接口,使用CGlib

      image-20201227111957342

  3. 术语

    连接点:一个类中哪些方法可以被增强,这些方法成为连接点

    切入点:实际上被真正增强的方法,成为切入点

    通知:

    • 实际增强的逻辑部分称为通知(增强)
    • 通知类型 (前置,后置,环绕,异常,最终)

    切面:是动作,把通知应用到切入点的过程

  4. 切入点表达式

    1. 作用:知道对哪个类的哪个方法进行增强

      ]]语法结构(基于AspectJ):

      execution(【权限修饰符】,【返回类型】,【类全路径】,(【参数列表】))

    2. 举例:

      image-20201227161706947

      image-20201227161735168

  5. 通知的配置

    (1)在spring配置文件中,开启注解扫描 (2)使用注解创建User和UserProxy对象 (3)在增强类上面添加注解@Aspect (4)在spring配置文件中开启生成代理对象

  6. 通知的种类

    ***/相同切入点抽取***    
    
    @Pointcut(value = "execution(* com.atguigu.spring5.aopanno.User.add(..))")    
    
    public void pointdemo() { }
    
     **//前置通知**
        //@Before注解表示作为前置通知
        @Before(value = "pointdemo()")//相同切入点抽取使用!
    
    **//后置通知(返回通知)**
        @AfterReturning(value = "execution(* com.atguigu.spring5.aopanno.User.add(..))") 
    
    **//最终通知**
        @After(value = "execution(* com.atguigu.spring5.aopanno.User.add(..))")
    
    **//异常通知**
        @AfterThrowing(value = "execution(* com.atguigu.spring5.aopanno.User.add(..))")
    
     **//环绕通知**
        @Around(value = "execution(* com.atguigu.spring5.aopanno.User.add(..))")
    
    public void around(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {        	System.out.println("环绕之前.........");         
       *//被增强的方法执行*        
    		proceedingJoinPoint.proceed();                                           		System.out.println("环绕之后.........");    }
  7. 通知类的优先级

    在类的前面加上@order(0),括号里的数字越小,表示优先级越高,可以填写0,1,2,3,4,5...

空文件

简介

SpringBoot整合AOP的Demo 展开 收起
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
1
https://gitee.com/xsyzer/springbootAOP.git
git@gitee.com:xsyzer/springbootAOP.git
xsyzer
springbootAOP
SpringBoot整合AOP-Demo
master

搜索帮助