我们将需要用到的类使用@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");
}