您的位置:首页 > 编程语言 > Java开发

如何让spring mvc web应用启动时就执行特定处理

2016-01-21 08:39 615 查看
一、Web项目,非Spring

1.需求:很多时候,在一个 web 项目启动的时候,我们都要【初始化很多系统参数,比如读取配置文件】,或者初始化数据库表...

2.解决方法:实现【 ServletContextListener】 接口

2.1.把实现了ServletContextListener 的类配置到【 web.xml】 文件中

[html] view
plaincopy





<?xml version="1.0" encoding="UTF-8"?>

<web-app version="2.5"

xmlns="http://java.sun.com/xml/ns/javaee"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<display-name></display-name>

<welcome-file-list>

<welcome-file>index.jsp</welcome-file>

</welcome-file-list>

<listener>

<listener-class>com.chinaso.init.StartInit</listener-class>

</listener>

<filter>

<filter-name>struts2</filter-name>

<filter-class>

org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

</filter-class>

</filter>

<filter-mapping>

<filter-name>struts2</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

</web-app>

2.2.加入自己的实现逻辑

[java] view
plaincopy





public class StartInit implements ServletContextListener {

static final Logger logger = LoggerFactory.getLogger(StartInit.class);

// 系统初始化执行方法

public void contextDestroyed(ServletContextEvent e) {

logger.info("系统停止...");

}

public void contextInitialized(ServletContextEvent e) {

logger.info("系统初始化开始...");

// 获取项目根目录

String root_path = e.getServletContext().getRealPath("/");

logger.info("application path : {}",root_path);

// 初始化 ConfigFactorty

ConfigFactory.init(root_path);

// 初始化数据链接信息

DBManager.init();

// 初始化定时统计任务

TaskManager.init();

// 初始化用户信息查询位置

UserInfo.init();

logger.info("系统初始化结束...");

}

}

作者:菩提树下的杨过

出处:http://yjmyzz.cnblogs.com

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

Asp.Net的应用中通过根目录下的Global.asax,在Application_Start方法中做一些初始化操作,比如:预先加载缓存项对网站热点数据进行预热,获取一些远程的配置信息等等。

二、Spring项目

Spring-MVC的应用中,要实现类似的功能,主要是通过实现下面这些接口(任选一,至少一个即可)

1、ApplicationContextAware接口

2、ServletContextAware 接口

3、InitializingBean 接口

4、ApplicationListener<ApplicationEvent> 接口

示例程序:

运行时,输出的顺序如下:

1 => StartupListener.setApplicationContext

2 => StartupListener.setServletContext

3 => StartupListener.afterPropertiesSet

4.1 => MyApplicationListener.onApplicationEvent

4.2 => MyApplicationListener.onApplicationEvent

4.1 => MyApplicationListener.onApplicationEvent

注意:onApplicationEvent方法会触发多次,初始化这种事情,越早越好,建议在setApplicationContext方法中处理。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java spring