我们知道AOP(面向切面编程)给开发人员带来了极大的便利性,特别是有强迫症的猿们,项目中出现一堆冗余且与实际业务无关的代码,看一次想撕一次。
网上找不到比较全的相关文章,特此花时间整理下,方便你我他。
下述实例源码传送门
https://gitee.com/peterven/aoptest
开箱即用
核心依赖
<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>
场景一 (接口方法执行前)
package com.gitee.peterven.controller.admin;
@Slf4j
@RestController
public class AdminController {
@GetMapping("admin/hello")
public void hello() {
log.info("I am admin method!");
}
}
@Slf4j
@Aspect
@Component
public class MyAspect {
@Before("execution(public * com.gitee.peterven.controller.admin.*.*(..))")
public void beforeTest() throws Throwable {
log.info("before invoke");
}
}
执行日志
before invoke
I am admin method!
语法分析
@Before // 表示方法执行前织入该方法
execution // 表示根据匹配规则执行方法
public // 表示匹配的方法必须是public的
* // 表示匹配的方法返回值可以是任意类型
com.gitee.peterven.c