Auslösen von Ereignissen beim Spring Boot-Startup

Eines der häufigsten Dinge bei der Entwicklung von Webanwendungen ist das Initialisieren oder Aufrufen eines Codeabschnitts beim Start der Anwendung. Wenn Sie eine herkömmliche Java-Webanwendung entwickeln, kann die Startlogik im ServletContextListener erwähnt werden. Spring bietet auch eine sehr praktische Möglichkeit, Ereignisse in den verschiedenen Phasen des Anwendungslebenszyklus aufzurufen. Ich habe den EventListener in Spring 4 und ContextRefreshedEvent bereits erläutert.

Spring Boot-Startereignisse

Spring Boot-Startereignisse

Dieses Tutorial führt Sie durch die Implementierung der Startereignis-Listener beim Schreiben der Spring Boot-Anwendungen.

Frühlings-Framework-Events

Im Folgenden finden Sie eine Liste der Spring-Framework-Ereignisse, die bei der Spring-Kontextinitialisierung ausgelöst werden können.

  • ContextRefreshedEvent: Dieses Ereignis wird bei Start- und Aktualisierungsereignissen des Spring-Kontexts ausgelöst. Dieses Ereignis wird am häufigsten zur Initialisierung der Daten beim Start verwendet.
  • ContextStartedEvent: Dieses Ereignis wird beim Start des Spring-Kontexts ausgelöst. Der Hauptunterschied zwischen ContextRefreshedEvent besteht darin, dass dieses Ereignis nur zu Beginn und nicht bei der Aktualisierung des Kontexts aufgerufen wird.
  • ContextStopedEvent: Dieses Ereignis wird ausgelöst, wenn der Spring-Kontext gestoppt wird.
  • ContextClosedEvent: Dieses Ereignis wird ausgelöst, wenn der Spring-Kontext geschlossen wird.

Beispiel für Spring Boot-Ereignisse

Ich habe ein einfaches Beispiel geschrieben, das zeigt, wie man ein Ereignis beim Start der Spring Boot-Anwendung veröffentlicht. Ich habe ApplicationListener zum Abhören des ContextRefreshedEvent registriert. Schauen wir uns zum besseren Verständnis den Code an.

Ich habe den kompletten Quellcode zum Download hochgeladen.

ContextRefreshedListener.java

package net.javabeat.spring.boot.example.util;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationListener;
import org.springframework.context.event.ContextRefreshedEvent;
import org.springframework.stereotype.Component;

@Component
public class ContextRefreshedListener implements ApplicationListener<ContextRefreshedEvent> {
	private SampleEvent sampleEvent;

	@Autowired
	public void setSampleEvent(SampleEvent sampleEvent) {
		this.sampleEvent = sampleEvent;
	}

	public void onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent) {
		System.out.println("Context Refreshed");
		sampleEvent.setEventFired(true);
	}
}

SampleEvent.java

package net.javabeat.spring.boot.example.util;

import org.springframework.stereotype.Component;

@Component
public class SampleEvent {
	private Boolean eventFired = false;

	public Boolean getEventFired() {
		return eventFired;
	}

	public void setEventFired(Boolean eventFired) {
		this.eventFired = eventFired;
	}
}

Anwendung.java

package net.javabeat.spring.boot.example;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;

import net.javabeat.spring.boot.example.util.SampleEvent;

@SpringBootApplication
public class Application {
	public static void main(String[] args) {
		ConfigurableApplicationContext ctx = SpringApplication.run(Application.class, args);
		SampleEvent bean = ctx.getBean(SampleEvent.class);
		System.out.println("Is Event Fired : " + bean.getEventFired());
	}

}

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>net.javabeat</groupId>
	<artifactId>boot</artifactId>
	<packaging>war</packaging>
	<version>0.0.1-SNAPSHOT</version>
	<name>boot</name>
	<url>http://maven.apache.org</url>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.3.3.RELEASE</version>
	</parent>
	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
	</dependencies>
	<build>
		<finalName>boot</finalName>
	</build>
</project>

Die Ausgabe für das obige Programm ist:

2016-03-18 22:25:15.783  INFO 6636 --- [           main] o.s.j.e.a.AnnotationMBeanExporter        : Registering beans for JMX exposure on startup
Context Refreshed
2016-03-18 22:25:15.972  INFO 6636 --- [           main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http)
2016-03-18 22:25:15.980  INFO 6636 --- [           main] n.j.spring.boot.example.Application      : Started Application in 2.699 seconds (JVM running for 3.003)
Is Event Fired : true

Laden Sie den Quellcode herunter

Symbol

Spring Boot-Events

1 Datei(en) 3,95 KB Download

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Nach oben scrollen