springboot 全局controller切面
时间: 2024-09-25 09:01:32 浏览: 37
解决springboot的aop切面不起作用问题(失效的排查)
Spring Boot 中全局Controller切面通常是指使用Spring AOP (Aspect Oriented Programming) 来创建一个可以跨越多个控制器的行为拦截器,比如日志记录、权限验证、性能统计等。通过定义一个切面(Aspect),你可以在一个地方添加通用的功能,然后让所有Controller共用这个功能,而不需要在每个Controller中单独处理。
以下是一个简单的例子:
1. 首先,你需要定义一个切面类,通常会包含`@Before`, `@Around`, 或 `@AfterReturning` 等注解来指定何时应用该切面的行为。例如,使用`@Before`可以在每个请求开始前执行一些操作:
```java
import org.aspectj.lang.ProceedingJoinPoint;
import org.springframework.stereotype.Component;
@Component
public class GlobalControllerAspect {
@Before("execution(* com.example.controller.*.*(..))")
public Object beforeMethod(ProceedingJoinPoint joinPoint) throws Throwable {
// 执行通用的操作,如记录日志
log.info("Before method execution: {}", joinPoint.getSignature());
// 调用原方法并返回结果
return joinPoint.proceed();
}
}
```
2. 这里的`execution(* com.example.controller.*.*(..))`是一个切入点表达式,表示对com.example.controller包下所有类的所有公开方法的调用。
阅读全文