Spring MVC 监控/监视每个请求
Spring MVC Monitor / Watch Every Request
是否可以监控进入的每个 Spring 请求?
类似于:
public class MySpringWatcher extends SpringSomething{
@Override
public HttpServletResponse watchResponse(HttpServletRequest request){
// Starts a timer and counter for analyzing each request made
MyTimerCounter timerCounter = new MyTimerCounter(request);
//Do the request, process Java and JSTL Code
request.doSomething();
// Mark complete and then log results
timerCounter.stop();
}
}
或者也许
public class MySpringWatcher extends SpringSomething{
MyTimerCounter activeRequest;
@Override
public SpringResponse beforeRequest(HttpServletRequest request){
// Starts a timer and counter for analyzing each request made
activeRequest = new MyTimerCounter(request);
}
@Override
public SpringResponse afterRequest(HttpServletRequest request, HttpServletResponse response){
// Mark complete and then log results
activeRequest.stop();
}
}
我想监控每个请求,以便我可以分析每个请求并计算 SQL 个请求、时间等,但我需要对每个请求和每个控制器执行此操作。
它应该在调用控制器方法之前开始,并在 JSP 完成之后结束。
我正在使用 SpringMVC 4、Spring Boot、Spring Security、Morphia 等
提前致谢!
看看 HandlerInterceptors (1.11.5 Interceptors)
它们将允许您在处理之前和之后拦截请求。
根据 Nitroware 的评论进行更新:
如果使用 spring boot/JavaConfig,您需要在 MvcConfig 中添加以下内容:
@Configuration
@EnableWebMvc
public class MvcConfig extends WebMvcConfigurerAdapter {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(myInterceptor());
}
@Bean
public MySpringWatcher myInterceptor() {
return new MySpringWatcher();
}
// ... The rest of your configuration ...
}
这将允许您注册新的 HandlerInterceptor。
对于基于 xml 的配置,请参阅 kmansoor 提供的 link:
拦截器必须是 'wired'。通过配置 xml 或 JavaConfig.
是否可以监控进入的每个 Spring 请求?
类似于:
public class MySpringWatcher extends SpringSomething{
@Override
public HttpServletResponse watchResponse(HttpServletRequest request){
// Starts a timer and counter for analyzing each request made
MyTimerCounter timerCounter = new MyTimerCounter(request);
//Do the request, process Java and JSTL Code
request.doSomething();
// Mark complete and then log results
timerCounter.stop();
}
}
或者也许
public class MySpringWatcher extends SpringSomething{
MyTimerCounter activeRequest;
@Override
public SpringResponse beforeRequest(HttpServletRequest request){
// Starts a timer and counter for analyzing each request made
activeRequest = new MyTimerCounter(request);
}
@Override
public SpringResponse afterRequest(HttpServletRequest request, HttpServletResponse response){
// Mark complete and then log results
activeRequest.stop();
}
}
我想监控每个请求,以便我可以分析每个请求并计算 SQL 个请求、时间等,但我需要对每个请求和每个控制器执行此操作。
它应该在调用控制器方法之前开始,并在 JSP 完成之后结束。
我正在使用 SpringMVC 4、Spring Boot、Spring Security、Morphia 等
提前致谢!
看看 HandlerInterceptors (1.11.5 Interceptors)
它们将允许您在处理之前和之后拦截请求。
根据 Nitroware 的评论进行更新:
如果使用 spring boot/JavaConfig,您需要在 MvcConfig 中添加以下内容:
@Configuration
@EnableWebMvc
public class MvcConfig extends WebMvcConfigurerAdapter {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(myInterceptor());
}
@Bean
public MySpringWatcher myInterceptor() {
return new MySpringWatcher();
}
// ... The rest of your configuration ...
}
这将允许您注册新的 HandlerInterceptor。
对于基于 xml 的配置,请参阅 kmansoor 提供的 link:
拦截器必须是 'wired'。通过配置 xml 或 JavaConfig.