跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • Spring boot 2.2 打成 war 包 过滤器或者拦截器 注入失败
未分類
21 7 月 2020

Spring boot 2.2 打成 war 包 过滤器或者拦截器 注入失败

Spring boot 2.2 打成 war 包 过滤器或者拦截器 注入失败

資深大佬 : qw564518158 19

第一次发帖,好像不能上图,就尴尬了。
因为 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 初始化的时候手动注入即可。
这个问题已经馋了我三天三夜了

大佬有話說 (11)

  • 資深大佬 : mosliu

    用 @Order(1000 ) 自己定义注入顺序应该就可以了吧

  • 資深大佬 : hfc

    注入失败有异常抛出嘛?有个 DependsOn 的注解,不知道有没有用。

  • 資深大佬 : xuanbg

    可以曲线救国,在另一个 Abc 类里面注入,这个类写个 @Component 就会被扫到自动实例化。然后在 Filter 里面用 ApplicationContextHolder.getContext().getBean(Abc.class)获取 Abc 的实例。

  • 資深大佬 : codingbody

    不懂就问,为啥不用 jar 而是用 war ?

  • 資深大佬 : hantsy

    看不出来你的 Filter 是哪里注册的。WebXML ?

    Servlet 中的 Servlet,Filter 等在 Spring Boot 中可以直接声明为 Component/Bean,Spring Boot 会帮你的注册。

  • 主 資深大佬 : qw564518158

    @mosliu 还有这等操作?下次试试看

  • 資深大佬 : WhenAtRains

    应该是自动注入 @Autowired 的事情

  • 資深大佬 : WhenAtRains

    我记得这个错是要看 localhost_accessxxxx 的日志才能在网上找到答案。看 catalina 日志看不出来

  • 資深大佬 : ala2008

    是的,上下文不一样

  • 資深大佬 : hantsy

    另外,可能 Instanise 顺序的问题,在加载 Filter 的时候,依赖可以没有实例。
    用 @Autowired 加上 @Lazy 。最新的 Spring 2.2 可以开启全局 Lazy Loading,提高启动速度。

  • 資深大佬 : wucao219101

    @codingbody 可能是为了用 jsp

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具