spring 在tomcat监听器赋值失败

本文记录了一次在Tomcat中遇到Spring监听器无法正确赋值的问题,详细描述了当尝试使用dicService对象时出现的空指针异常。问题在于Spring自动注解的优先级低于Listener监听器,导致dicService未被正确初始化。解决办法是通过手动获取Spring监听器创建的IoC容器来获取对象。
摘要由CSDN通过智能技术生成

记一次spring 在tomcat监听器赋值失败的问题

public class servletContextLister implements ServletContextListener {
    @Autowired
    DicService dicService;

当我使用这个dicService对象时候,报空指针异常:

13-Nov-2020 13:10:39.106 信息 [RMI TCP Connection(3)-127.0.0.1] org.springframework.web.context.ContextLoader.initWebApplicationContext Root WebApplicationContext initialized in 1318 ms
java.lang.NullPointerException

也就是说这个dicService没赋上值。

查阅资料知道问题所在:

当调用dicService方法时,spring容器还没有完成对注解的扫描,dicService对象也就没有赋值,spring自动注解的优先级没有Listener监听器优先级高,所以contextListener初始化的时候根据@Autowired扫描,肯定是null的。

解决方法:手动获取spring监听器自动创建的ioc容器对象,手动获取容器中的对象。

public class servletContextLister implements ServletContextListener {

//获取spring容器对象
ApplicationContext a = ContextLoader.getCurrentWebApplicationContext();
//获取创建的service对象
DicService dicService = (DicService) a.getBean("dicServiceImpl");
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值