springboot 拦截器向controller目标方法设置参数
时间: 2024-12-13 15:15:16 浏览: 6
SpringBoot快速设置拦截器并实现权限验证的方法
5星 · 资源好评率100%
Spring Boot 中拦截器(Interceptor)可以用于增强或修改Controller的目标方法的请求处理过程。如果你想在控制器方法执行前或执行后设置参数,你可以自定义一个AOP(Aspect Oriented Programming,面向切面编程)的拦截器。这里是一个简单的例子:
首先,你需要创建一个实现了`HandlerMethodInterceptor`接口的类,例如 `MyInterceptor`:
```java
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.springframework.core.MethodParameter;
import org.springframework.http.HttpHeaders;
import org.springframework.http.server.ServerHttpRequest;
import org.springframework.http.server.ServerHttpResponse;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import org.springframework.web.method.HandlerMethod;
@Aspect
@RestControllerAdvice
public class MyInterceptor {
@Before("execution(* com.example.controller.MyController.*(..))")
public Object setHeaderBefore(HandlerMethod handlerMethod,
ServerHttpRequest request,
ServerHttpResponse response) {
// 获取需要设置的参数并添加到headers
HttpHeaders headers = new HttpHeaders();
headers.add("Custom-Param", "YourValue");
// 如果你想在参数级别操作,可以用MethodParameter获取方法参数
MethodParameter methodParameter = handlerMethod.getMethodParameter();
// 对参数做进一步的设置...
// 设置响应头
response.getHeaders().add(headers);
return null; // 返回null表示继续执行目标方法,如果返回其他值,则会替换默认执行的结果
}
}
```
在这个示例中,我们定义了一个全局拦截器,它会在`com.example.controller.MyController`包下的所有方法调用前设置一个名为"Custom-Param"的HTTP头。
阅读全文