以前使用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>