我希望在spring调用控制器方法之前和/或之后运行一些代码(用于日志记录或自定义安全性等)。我知道可以创建Filter
来操作ServletRequest
和ServletResponse
,但是不清楚如何从这些访问标题,正文,查询参数等。
与我尝试做的最相似的是Play Framework for java中的动作组合。
有没有办法在Spring中这样做?
答案 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() {
}
}