方案一:使用servlet的方式应该不陌生,在web.xml中定义一个servlet,在init方法中把要初始化的东西写到里面;如:
<servlet> <servlet-name>initServlet</servlet-name> <servlet-class>com.ifeng.crm.common.InitServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet>注:不需要写servlet-maping
public class InitServlet extends HttpServlet { private static Logger logger = Logger.getLogger(InitServlet.class); @Override public void init() throws ServletException { // TODO Auto-generated method stub super.init(); ServletContext context = super.getServletContext(); ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(context); InitService initService = (InitService)ctx.getBean("initService"); SyncService syncService = (SyncService)ctx.getBean("syncService"); logger.info("初始化数据开始。。。"); initService.init(); logger.info("初始化完成!"); logger.info("启动iams同步服务。。。"); new Thread(new SyncIamsThread(syncService)).start(); logger.info("启动iams同步服务完成!"); } }
方案二:listener:
ServletContext 被 Servlet 程序用来与 Web 容器通信。每一个 Web 应用程序含有一个Context,被Web应用内的各个程序共享。所以ServletContext 的最大应用是Web缓存----把不经常更改的内容读入内存,所以服务器响应请求的时候就不需要进行慢速的磁盘I/O了。
ServletContextListener 是 ServletContext 的监听者,如果 ServletContext 发生变化,如服务器启动时 ServletContext 被创建,服务器关闭时 ServletContext 将要被销毁。在JSP文件中,application 是 ServletContext 的实例,由JSP容器默认创建。Servlet 中调用 getServletContext()方法得到 ServletContext 的实例。
服务器启动时,ServletContextListener 的 contextInitialized()方法被调用,所以在里面创建好缓存。
实例:
1.web.xml
<listener> <listener-class>com.zzcatv.util.projectInit</listener-class> </listener>2.java
public class ProjectInit implements ServletContextListener{ private static Logger logger = Logger.getLogger(ProjectInit.class); public void contextDestroyed(ServletContextEvent arg0) { logger.info("==========初始化信息进行销毁=========="); } public void contextInitialized(ServletContextEvent arg0) { logger.info("==========系统初始化=========="); try { ApplicationContext ctx = WebApplicationContextUtils.getRequiredWebApplicationContext(arg0.getServletContext()); InitService initService = (InitService) ctx.getBean("initServiceImpl"); initService.init(); } catch (Exception e) { e.printStackTrace(); } } }