美文网首页
Mark3 项目记录---0x04 AOP

Mark3 项目记录---0x04 AOP

作者: 量产型炮灰工程师 | 来源:发表于2017-06-10 16:19 被阅读0次

在写日志模块之前,突然想起前面还有这个aop。现在这节要做的,是基于切面来打日志,捕捉/处理异常。

准备

  • 引入依赖
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-aop</artifactId>
        </dependency>

在引入依赖后,其实已经是什么都不用干了,因为引入依赖后,springBoot为什么自动开启了spring.aop.auto=true选项,它相当于已经启用了@EnableAspectJAutoProxy这个注解。
在application.properties中,点进spring.aop.auto=true选项

application.properties 点进spring.aop.auto选项

我们还发现,这个spring.aop.proxy-target-class选项,默认为false,看它的描述的意思是,默认为false,是采用标准Java实现,如果是true,就采用cglib,顾application.properties中,配置如下:

#Aop Config
#spring.aop.auto这个可以不写,因为引入依赖后,默认是开启的
spring.aop.auto=true
spring.aop.proxy-target-class=true

剩下的就是Spring-AOP的事情了,别无二样

使用环绕切面对任意实现了T*Mapper接口的所有方法进行拦截

关于aop的切入语法,可以看【第六章】 AOP 之 6.5 AspectJ切入点语法详解 ——跟我学spring3
关于aop的注解,虽然SpringBoot略有不同,也可以看【第六章】 AOP 之 6.4 基于@AspectJ的AOP ——跟我学spring3

  • 基本词汇解析
    • ProceedingJoinPoint

      切入点,JoinPoint的子类,专用于环绕切面,切入点可以获取拦截到的传入参数,使用getArgs()即可获得参数数组; proceed(),是用来执行目标方法的,例如我拦截了mapper的insert()方法,如果执行了pj.proceed(),即执行mapper.nsert()

aop的核心其实就是代理模式 如何让孩子爱上设计模式 ——13.代理模式(Proxy Pattern)

项目地址
代码下载

相关文章

网友评论

      本文标题:Mark3 项目记录---0x04 AOP

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