我在Spring项目中,我需要过滤器。 现在我已经读过" Interceptor Vs Filter"现在我选择过滤器。
所以我把这个类作为过滤器
public class LogFilter implements Filter {
private final Logger log = LoggerFactory.getLogger(this.getClass());
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
String ipAddress = request.getRemoteAddr();
this.log.info("IP " + ipAddress + ", Time " + new Date().toString());
chain.doFilter(req, res);
}
public void init(FilterConfig config) throws ServletException {
// Get init parameter
String testParam = config.getInitParameter("test-param");
this.log.info("Test Param:" + testParam);
}
public void destroy() {
// Add code to release any resource
}
}
这种在java配置中注册过滤器bean的方法(无xml配置)
@Bean
public LogFilter filter() {
LogFilter filter = new LogFilter();
this.beanFactory.autowireBean(filter);
return filter;
}
现在这个过滤器适用于我的应用的每个网址,如何选择哪个网址"在过滤器" ?
修改 我用这种方式解决了这个问题
@Bean
public FilterRegistrationBean regFilter() {
FilterRegistrationBean regFilter = new FilterRegistrationBean();
regFilter.setFilter(new LogFilter());
regFilter.addUrlPatterns("/test");
return regFilter;
}
感谢评论中的提示,我找到了this
答案 0 :(得分:0)
如果您正在使用注释来配置您的网络@WebFilter按http://docs.oracle.com/javaee/6/tutorial/doc/bnagb.html注释您的过滤器。
请注意,这些注释应放在LogFilter中。而且它与春豆或春天的背景无关。这些配置由应用程序服务器扫描和处理,例如Tomcat,但是Spring。