以前使用springmvc框架的时候,需要在xml里配置bean,如数据库连接池、事务等。现在采用springboot则告别了那些配置,只需要灵活的加上一些注解即可。总之,不管采用何种配置,最终的目的都是为了让配置的内容被spring容器管理起来。
Filter的配置
1.新建一个类继承Filter,并实现它的方法。
public class LogFilter implements Filter {
private Logger logger= LoggerFactory.getLogger(LogFilter.class);
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
logger.info("请求到来...");
chain.doFilter(request,response);
}
@Override
public void destroy() {
}
}
2.怎么让这个Filter产生效果呢?以前springmvc的做法是在web.xml文件里配置的,而springboot的做法如下。
@Configuration
public class FilterBeanConfig {
/**
* 1. 构造filter
* 2. 配置拦截器urlPattern
* 3. 利用FilterRegistrationBean进行包装
* @return
*/
@Bean
public FilterRegistrationBean logFilter(){
FilterRegistrationBean filterRegistrationBean=new FilterRegistrationBean();
filterRegistrationBean.setFilter(new LogFilter());
List<String> urlList=new ArrayList<>();
urlList.add("*");
filterRegistrationBean.setUrlPatterns(urlList);
return filterRegistrationBean;
}
}
注解@Configuration表明该类是个配置类,需要被spring加载到。@Bean表明实例化了一个FilterRegistrationBean,并且bean的id是logFilter。然后LogFilter作为一个属性注入到该bean中。类似以下写法:
<beans>
<bean id="logFilter" class="org.springframework.boot.web.servlet.FilterRegistrationBean"/>
</beans>