springboot3中 在aop 使用 request
时间: 2024-03-23 22:37:32 浏览: 218
在 Spring Boot 3 中,可以通过使用 `JoinPoint` 参数来获取当前执行的方法的信息,包括方法参数、方法名、目标对象等等。如果需要获取 `HttpServletRequest` 对象,可以通过将 `JoinPoint` 参数转换为 `ServletRequestAttributes` 对象,从而获取 `HttpServletRequest` 对象。示例代码如下:
```java
import javax.servlet.http.HttpServletRequest;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
@Aspect
@Component
public class LogAspect {
@Before("execution(public * com.example.demo.controller..*.*(..))")
public void logBefore(JoinPoint joinPoint) {
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
HttpServletRequest request = attributes.getRequest();
// do something with request
}
}
```
这里使用 `@Before` 注解将切面应用于所有 `com.example.demo.controller` 包下的公共方法。在切面方法中,首先将 `JoinPoint` 参数转换为 `ServletRequestAttributes` 对象,然后通过 `getRequest()` 方法获取 `HttpServletRequest` 对象,可以在切面方法中对该对象进行操作。
阅读全文