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が初期化またはリフレッシュされるときに発生するイベントです。
実行すると以下のように文字列が出力されます。
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メソッドに実行する処理を記述します。
関連の記事