春季启动有没有更好的方法,我可以在数据库(例如,Redis或ES)中为每种类型的REST调用及其相应的时间戳维护一个持久计数器? (我不想要的是从每个REST调用中调用一个函数)。可能类似于我可以在将控件传递给与REST调用相对应的函数(一个公共部分)之前执行此操作。
答案 0 :(得分:0)
您可以实现自定义拦截器。
public class MyInterceptor extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// persist your counter here
return true;
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
super.afterCompletion(request, response, handler, ex);
// do what you need in the end of the call
}
要使spring-boot调用你的拦截器,你应该添加一个配置类:
@Service
@EnableWebMvc
public class MyConfiguration extends WebMvcConfigurerAdapter {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new MyInterceptor()).addPathPatterns("/*");
}
}