当前位置: 代码迷 >> J2EE >> Spring容器初始化一个永不销毁的对象解决方案
  详细解决方案

Spring容器初始化一个永不销毁的对象解决方案

热度:39   发布时间:2016-04-17 23:01:48.0
Spring容器初始化一个永不销毁的对象
需求:
    容器启动时,初始化一个bean,这个bean会把一些东西放到一个Map里面去,除非关闭容器,否则这个Map不会被销毁,所有用户都可以从这个Map中get到value。
    也就是说,web容器一跑起来,这个bean就一直存在了,除非我关闭web容器,否则他不会消失。而且所有的用户都可以get到里面的值。

问题:
要怎么配置,才能达到以上效果。
------解决思路----------------------
对于servlet容器来说:
servletContext就是你要的东西
springmvc中凡是和servletcontext相关的都是关闭容器销毁:比如,ApplicationContext
------解决思路----------------------
如果你是要在容器启动的同时初始化servletContext,可以使用servletContext的监听器,你可以监听servletContext创建的时刻,然后使用setAttribute(String,Object);往servletContext中添加对象
------解决思路----------------------
引用:
如果你是要在容器启动的同时初始化servletContext,可以使用servletContext的监听器,你可以监听servletContext创建的时刻,然后使用setAttribute(String,Object);往servletContext中添加对象

可以通过这种contextloaderlistener,里面做一个单例,contextInitialized时候初始化。contextdestroy的时候销毁。

------解决思路----------------------
1. 申明一个bean的scope属性是singleton能保证bean的实例在应用运行过程中全程唯一。
2. 让bean类实现InitializingBean接口,能让bean在启动时被初始化。

如果只是存一些字符或数字之类的,何不做成properties文件用spring的PropertyPlaceholderConfigurer去管理
  相关解决方案