spring boot 没有了配置文件,可以写一个Filter 来完成过滤。
1.写Filter:
public class CustomFilter implements Filter {
/**
* 封装,不需要过滤的list列表
*/
protected static List<Pattern> patterns = new ArrayList<Pattern>();
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest httpRequest = (HttpServletRequest)servletRequest;
HttpServletResponse httpResponse = (HttpServletResponse)servletResponse;
String url = httpRequest.getRequestURI().substring(httpRequest.getContextPath().length()); //请求的url
filterChain.doFilter(httpRequest, httpResponse); // 发到controller方法时候,参数居然是有的。
}
/**
* 是否需要过滤
* @param url
* @return
*/
private boolean isInclude(String url) {
for (Pattern pattern : patterns) {
Matcher matcher = pattern.matcher(url);
if (matcher.matches()) {
return true;
}
}
return false;
}
@Override
public void destroy() {
}
}
2. 注册过滤器: 在application.java下面 注册过滤器
@SpringBootApplication
public class SieracApiApplication extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(SieracApiApplication.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(SieracApiApplication.class);
}
/**
* 注册过滤器
* @return
*/
@Bean
public FilterRegistrationBean filterRegistrationBean() {
FilterRegistrationBean registrationBean = new FilterRegistrationBean();
registrationBean.setFilter(new CustomFilter());
List<String> urlPatterns = new ArrayList<String>();
urlPatterns.add("/api/dealer/out/list"); //这个请求会走filter。 比如是/api/product/out/list就不会走filter
urlPatterns.add("/api/dealer/out/scanCheck");
urlPatterns.add("/api/dealer/out/detail");
urlPatterns.add("/api/dealer/out/scanStatus");
registrationBean.setUrlPatterns(urlPatterns);
return registrationBean;
}
}