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

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

    @Autowired
    private SysLoginUserServiceImpl userService;

    @Autowired
    private SysOperlogsServiceImpl sysOperlogsService;

并且在该类我们已经使用注解加载到容器
当使用@Autowired无法获取该类时。如过滤器

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

当使用@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");
        }
上一篇:5.自动装配


下一篇:Spring入门