首页 > 编程知识 正文

servlet报错,jsp转换成servlet

时间:2023-05-06 15:21:22 阅读:41553 作者:2693

最近的项目要求在项目初始化时缓存数据。 经历挖洞,做必要的笔记,可以巩固自己学习的知识,也可以为有同样问题的人提供参考

文章目录一发生原因二解决方案三总结

一旦产生原因

首先,@Autowired或@Resource无法获取值,因为ServletContextListener侦听的是项目的启动或停止,此时Spring的Bean还没有注入。

请考虑通过实现ApplicationContextAware接口来手动实例化Bean。 如下所示。

@component(initcomponent ) ) publicclassinitcomponentimplementsservletcontextlistener, applicationcontextaware { private } @ overridepublicvoidcontextinitialized (servletcontexteventservletcontextevent )//某种类型} @ overridepublicvoidcontextdestroyed (servletcontexteventservletcontextevent ) { } @ overridepublicvoidsetapplicationcontext (应用程序内容应用程序内容) throwsbeansexception { this.application conception 实际测试表明,原因是在项目启动后分别侦听Spring容器和系统启动事件时实例化InitComponent对象,第一次实例化对象时, 发现它是Spring的@component(「initcomponent”)。第二次实例化对象时,将调用contextInitialized ()并应用于赋值此外,由于这两个实例化的对象是不同的(平行关系),因此在contextInitialized )方法中使用applicationContext时会报告空指针异常。

虽然感觉有点绕圈子,但是请自己实践一下。

二解决方案是

隐私应用程序上下文; 更改为

私有应用程序上下文; 也就是说,通过静态限定应用程序上下文,该属性属于整个类,只要进行一次初始化赋值,就可以在任何实例中使用。

三如果有总结错误的话请指出来。 如果有雷同,那完全是偶然的

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。