在一个基于Spring的web项目中,当我们需要在应用启动时加载数据字典时,可写一个监听实现javax.servlet.ServletContextListener
实现其中的contextInitialized(ServletContextEvent sce) 方法完成,初始化的操作。代码示例如下
一、监听程序
import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; import org.springframework.context.ApplicationContext; import org.springframework.web.context.support.WebApplicationContextUtils; public class InitDicListener implements ServletContextListener { public void contextInitialized(ServletContextEvent sce) { //spring 上下文 ApplicationContext appContext = WebApplicationContextUtils.getWebApplicationContext(sce.getServletContext()); /* ServiceBean bean1=appContext.getBean("xxx"); ...业务方法,加载数据字典等。 */ } public void contextDestroyed(ServletContextEvent sce) { } }
二、配置文件中加入配置
在web.xml中加入 监听配置, 但要写在Spring配置的下面,这样我们自定义的监听会在Spring监听之后启动,这个时候在我们自定义的监听程序中能够得到Spring的上下文。
因为,当web.xml中有多个<listener>配置时,排在前面的先启动
<!-- Spring 框架 --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- 加载数据字典 在Spring配置的下面--> <listener> <listener-class>msdemo.listener.InitDicListener</listener-class> </listener>
三、数据字典使用
程序中 通过 ServletContext的getAttribute(name) 方法来获得 字典数据
jsp页面中 ${name} 来使用。