其他分享
首页 > 其他分享> > 当使用@Autowired无法获取该类时。如过滤器

当使用@Autowired无法获取该类时。如过滤器

作者:互联网

我们将需要用到的类使用@AutoWired注解自动写入

    @Autowired
    private SysLoginUserServiceImpl userService;

    @Autowired
    private SysOperlogsServiceImpl sysOperlogsService;

并且在该类我们已经使用注解加载到容器
在这里插入图片描述

我们发现虽然已经使用@AutoWired将类自动写入。但是当我们使用时,还是报空指针异常。

在这里插入图片描述
这是因为当我们使用拦截器时,还没有扫描包到容器。会在这之前执行拦截器。所有,我们需要手动获取该类。代码如下:

ServletContext sc = req.getSession().getServletContext();

        AbstractApplicationContext cxt = (AbstractApplicationContext) WebApplicationContextUtils.getWebApplicationContext(sc);
        if (cxt != null && cxt.getBean("sysLoginUserServiceImpl") != null && userService == null) {
            // 取出 userInfoService
            userService = (SysLoginUserServiceImpl) cxt.getBean("sysLoginUserServiceImpl");
        }
        if (cxt != null && cxt.getBean("sysOperlogsServiceImpl") != null && sysOperlogsService == null) {
            // 取出 userInfoService
            sysOperlogsService = (SysOperlogsServiceImpl) cxt.getBean("sysOperlogsServiceImpl");
        }

标签:cxt,&&,Autowired,getBean,该类,过滤器,userService,null
来源: https://blog.csdn.net/languageStudent/article/details/114875280