前言:本文不介绍 AOP 的基本概念、动态代理方式实现 AOP,以及 Spring 框架去实现 AOP。本文重点介绍 Spring Boot 项目中如何使用 AOP,也就是实际项目开发中如何使用 AOP 去实现相关功能。
如果有需要了解 AOP 的概念、动态代理实现 AOP 的,请查看我的另外一篇文章:
正文开始:
Spring Boot中实际应用AOP
1、之前介绍的实现 AOP 的方式中是有 XML 文件设置。但在 Spring Boot 中,没有 XML 文件,那怎么设置 AOP?
2、实际应用中:MVC三层架构,现需要在控制器中统一进行日志的输出(有各种各样的控制器),那怎么实现?(也就是说实际应用中如何实现?)
1、Cal 接口、CalIml 接口实现类 还是跟 Spring框架实现AOP 中一样。之前的两个依赖不要,添加这个依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
2、控制器中需要打印日志,比如:调控制器中的哪个方法(接口)、方法有哪些参数、返回值。当然,你肯定可以在每个方法中写,但显然这不现实。这里用 AOP 方法将打印日志抽离出来,然后需要的时候嵌入到每个方法中
//以下代码仅是为了测试,代码不规范,请注意。
@RestController
@RequestMapping("/aop")
public class AopSpringBootTestHandler {
@GetMapping("/findAll")
public List<Account> findAll() {
return Arrays.asList(new Account