java如何在SpringREST控制器中拦截所有请求?
我有很多控制器,比如:
@RestController
public class AreaController {
@RequestMapping(value = "/area", method = RequestMethod.GET)
public @ResponseBody ResponseEntity<Area> get(@RequestParam(value = "id", required = true) Serializable id) { ... }
}
我需要截取他们收到的所有请求
我创建了一个拦截器,如下示例所示:
http://www.mkyong.com/spring-mvc/spring-mvc-handler-interceptors-example/
但它从未进入:(
因为我只使用注释,所以没有XML来定义拦截器, 我发现它是这样设置的:
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.test.app")
public class AppConfig extends WebMvcConfigurerAdapter {
@Bean
public ControllerInterceptor getControllerInterceptor() {
ControllerInterceptor c = new ControllerInterceptor();
return c;
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(getControllerInterceptor());
super.addInterceptors(registry);
}
}
我做错了什么,还是遗漏了什么
# 1 楼答案
可能您缺少映射
我知道你不必使用
# 2 楼答案
您的
Interceptor
类ControllerInterceptor
不是应用程序上下文管理的bean。确保在ControllerInterceptor上放置@Component
注释,并将其包添加到@ComponentScan
。那么,假设您的ControllerInterceptor
驻留在包com中。xyz。拦截器,如:你的AppConfig变成:
# 3 楼答案
很明显我做错了什么但说不出什么
定义拦截器如下:
我很确定你也可以用纯java来定义它,但这是可行的
答案如下: http://viralpatel.net/blogs/spring-mvc-interceptor-example/