Spring boot 2.2 打成 war 包 过滤器或者拦截器 注入失败
因为 jar 包的顺序和 war 的加载顺序不同。
Filter 里面注入失败。
解决方法在 init 初始化这里对 Service 进行手动注入
public class RESTApiAuthenticationFilter implements Filter {
protected Logger logger = LoggerFactory.getLogger(getClass());
@Autowired
private ApiUserService apiUserService;
@Autowired
private SignaConfig signaConfig;
@Override
public void init(FilterConfig filterConfig) {
logger.info(“RESTApiAuthentication filter has been launched!”);
//手动注入
BeanFactory factory = WebApplicationContextUtils.getRequiredWebApplicationContext(filterConfig.getServletContext());
signaConfig = factory.getBean(SignaConfig.class);
apiUserService = factory.getBean(ApiUserService.class);
}
@Override
public void doFilter(ServletRequest servletrequest, ServletResponse servletresponse,
FilterChain chain) throws IOException, ServletException {
}
@Override
public void destroy() {
// TODO Auto-generated method stub
}
}
在 Filter 初始化的时候手动注入即可。
这个问题已经馋了我三天三夜了