# spring-boot-aop **Repository Path**: wzk9261/spring-boot-aop ## Basic Information - **Project Name**: spring-boot-aop - **Description**: 基于 Spring Boot 的 AOP 案例 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2019-11-25 - **Last Updated**: 2023-01-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Spring AOP 案例 ## 项目简介 参考博客:[Spring Boot中使用AOP统一处理Web请求日志](http://blog.didispace.com/springbootaoplog/) 注意,测试时 WebLogAspect1 和 WebLogAspect2 只需要留下一个即可,另一个注释掉`@Aspect`和`@Component`方法两个注解。 AOP 相关的概念见:[SpringBoot AOP的使用](https://juejin.im/post/5c47e4b26fb9a049b50726d8) ## 配置步骤 ### 定义接口 定义一个简单的 HelloController,提供切点。 ### 引入依赖 引入 AOP 相关依赖,此依赖中包含 AOP 所需的注解。 ```xml org.springframework.boot spring-boot-starter-aop 2.2.1.RELEASE ``` ### 定义切面类 创建 WebLogAspect 类,并在类上加入`@Aspect`和`@Component`注解 #### 定义切点 使用[`@PointCut`](https://www.cnblogs.com/liaojie970/p/7883687.html)注解定义切点 ```java @Pointcut("execution(public * com.jake.springboot.aop.web.*.*(..))") public void webLog(){} ``` 其中,“execution” 部分为 Pointcut 表达式,webLog 方法为 Pointcut 签名。 #### 定义通知方法 在通知(增强)方法上使用`@Around` `@Before` `@After` `@AfterThrowing` `@AfterReturning`等注解。并在增强方法中输出必要的日志,可以充分利用连接点 JoinPoint 和返回值 Object 来做日志打印。 具体可参考:[AspectJ 切面注解中五种通知注解:@Before、@After、@AfterRunning、@AfterThrowing、@Around](https://blog.csdn.net/u010502101/article/details/78823056) ## 测试 AOP 启动项目,访问自定义的接口,观察日志输出的内容及顺序。