每个REST调用的持久计数器

时间:2017-11-05 12:12:26

标签: java rest spring-boot

春季启动有没有更好的方法,我可以在数据库(例如,Redis或ES)中为每种类型的REST调用及其相应的时间戳维护一个持久计数器? (我不想要的是从每个REST调用中调用一个函数)。可能类似于我可以在将控件传递给与REST调用相对应的函数(一个公共部分)之前执行此操作。

1 个答案:

答案 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("/*");
    }

}