如何让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应用启动时就执行特定处理的主要内容,如果未能解决你的问题,请参考以下文章

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

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

spring mvc web应用启动时就执行特定处理(线程启动)

spring MVC tomcat启动 执行

模拟Spring如何在WEB中运行

Spring MVC Web 应用程序:应用程序上下文启动两次