如何让spring mvc web应用启动时就执行特定处理
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何让spring mvc web应用启动时就执行特定处理相关的知识,希望对你有一定的参考价值。
Asp.Net的应用中通过根目录下的Global.asax,在Application_Start方法中做一些初始化操作,比如:预先加载缓存项对网站热点数据进行预热,获取一些远程的配置信息等等。Spring-MVC的应用中,要实现类似的功能,主要是通过实现下面这些接口(任选一,至少一个即可)
一、ApplicationContextAware接口
+ View Code
二、ServletContextAware 接口
+ View Code
三、InitializingBean 接口
+ View Code
四、ApplicationListener<ApplicationEvent> 接口
+ View Code
示例程序:
+ View Code
运行时,输出的顺序如下:
1 => StartupListener.setApplicationContext
2 => StartupListener.setServletContext
3 => StartupListener.afterPropertiesSet
4.1 => MyApplicationListener.onApplicationEvent
4.2 => MyApplicationListener.onApplicationEvent
4.1 => MyApplicationListener.onApplicationEvent
注意:onApplicationEvent方法会触发多次,初始化这种事情,越早越好,建议在setApplicationContext方法中处理。 参考技术A 写一个类实现InitializingBean接口,并在application.xml注入bean就行了,
1
2
3
4
5
6
7
8
9
public class InitLoadData implements InitializingBean
@Override
public void afterPropertiesSet() throws Exception
// TODO Auto-generated method stub
System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>init load info");
配置bean
1
<bean class="xx.xx.InitLoadData"></bean>
如何在 Spring MVC 应用程序中启动 ApplicationContext 加载线程?
【中文标题】如何在 Spring MVC 应用程序中启动 ApplicationContext 加载线程?【英文标题】:How to start a thread on ApplicationContext load in Spring MVC application? 【发布时间】:2022-01-17 12:33:42 【问题描述】:我正在创建这个 Spring Web MVC 应用程序。我想在 ApplicationContext 开始加载时启动一个线程。我该怎么做??
【问题讨论】:
你没有。您不应该自己启动线程,通常如果您这样做,您就会以错误的方式做事。您尝试使用附加线程解决的问题是什么? 【参考方案1】:我发现了这个及其工作
@Component
public class StartupApplicationListenerExample implements
ApplicationListener<ContextRefreshedEvent>
private static final Logger LOG
= Logger.getLogger(StartupApplicationListenerExample.class);
public static int counter;
@Override public void onApplicationEvent(ContextRefreshedEvent event)
LOG.info("Increment counter");
counter++;
【讨论】:
以上是关于如何让spring mvc web应用启动时就执行特定处理的主要内容,如果未能解决你的问题,请参考以下文章