在spring boot controller之前或之后在http上下文中运行代码

时间:2015-09-27 21:15:40

标签: java spring http spring-mvc

我希望在spring调用控制器方法之前和/或之后运行一些代码(用于日志记录或自定义安全性等)。我知道可以创建Filter来操作ServletRequestServletResponse,但是不清楚如何从这些访问标题,正文,查询参数等。

与我尝试做的最相似的是Play Framework for java中的动作组合。

有没有办法在Spring中这样做?

1 个答案:

答案 0 :(得分:0)

以下是如何使用Filter

为每个请求注入Header的示例
@Component
@Order(Ordered.HIGHEST_PRECEDENCE)
public final class VersionFilter implements Filter  {

@Value("${version}")
protected String version;

protected FilterConfig filterConfig;

public void init(FilterConfig filterConfig) throws ServletException {
    this.filterConfig = filterConfig;
}

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
    HttpServletResponse responseAddition = (HttpServletResponse) response;

    responseAddition.addHeader("X-Application-Version", this.version);

    chain.doFilter(request,responseAddition);
}

@Override
public void destroy() {

}
}