Spring MVC 起動時にメソッドを実行するサンプル

Spring MVCのtomcatの起動時にメソッドを実行するサンプルです。
(確認環境:Spring5,JDK 8,STS 4)

目次

サンプル Tomcat起動時にメソッドを実行する
  起動時に実行されるクラス(StartTest.java)
  (参考)サーブレットの場合

Tomcat起動時にメソッドを実行する

tomcatを起動するとStartTestクラス内のメソッドが実行されコンソールに文字列が表示されます。

 

起動時に実行されるクラス(StartTest.java)

package com.example.test1;

import org.springframework.context.event.ContextRefreshedEvent;
import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Component;

@Component
public class StartTest {
	@EventListener
	public void test(ContextRefreshedEvent cse) {
		System.out.println("スタートのテスト");
	}
}

9行目は、EventListenerのアノテーションです。spring4.2で導入されました。
10行目の引数に検知したいクラスを指定します。
ここではContextRefreshedEventを指定しています。ApplicationContextが初期化またはリフレッシュされるときに発生するイベントです。

https://spring.pleiades.io/spring-framework/docs/current/javadoc-api/org/springframework/context/event/ContextRefreshedEvent.html

実行すると以下のように文字列が出力されます。

 

Spring4.1以前の場合

ApplicationListenerインタフェースを実装します。

package com.example.test1;

import org.springframework.context.ApplicationListener;
import org.springframework.context.event.ContextRefreshedEvent;
import org.springframework.stereotype.Component;

@Component
public class StartTest implements ApplicationListener<ContextRefreshedEvent> {
	@Override
	public void onApplicationEvent(final ContextRefreshedEvent event) {
		System.out.println("スタートのテスト");
	}
}

メソッドの引数は上記と同じくContextRefreshedEventを指定します。

pom.xmlの設定

	<dependencies>
		<!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-webmvc</artifactId>
			<version>5.3.9</version>
		</dependency>
	</dependencies>

applicationContext.xmlの設定

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:mvc="http://www.springframework.org/schema/mvc"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:p="http://www.springframework.org/schema/p"
	xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        https://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context 
        https://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/mvc
        https://www.springframework.org/schema/mvc/spring-mvc.xsd">
	<context:component-scan
		base-package="com.example.test1" />

</beans>

 

(参考)サーブレットの場合

ServletContextListenerインタフェースを実装します。

package com.example.test1;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;

@WebListener
public class ListenerTest implements ServletContextListener {

    public void contextInitialized(ServletContextEvent arg0)  {
    	System.out.println("スタートのテスト");
    }

    public void contextDestroyed(ServletContextEvent arg0)  {
    }
}

contextInitializedメソッドに実行する処理を記述します。

関連の記事

Java サーブレットのweb.xmlの確認

△上に戻る