@EnableAutoConfiguration-Annotation in Spring Boot

@EnableAutoConfiguration Annotation konfiguriert automatisch die Beans, die im Klassenpfad vorhanden sind. Dies vereinfacht die Arbeit der Entwickler, indem sie die erforderlichen Beans aus dem Klassenpfad erraten und sie für die Ausführung der Anwendung konfigurieren. Diese Anmerkung ist Teil des Spring-Boot-Projekts.

Zum Beispiel, wenn Sie haben tomcat-embedded.jar im Klassenpfad, dann benötigen Sie eine TomcatEmbeddedServletContainerFactory Bean zum Konfigurieren des Tomcat-Servers. Dies wird ohne manuelle XML-Konfigurationen gesucht und konfiguriert.

Spring Boot aktiviert die automatische Konfiguration

Spring Boot aktiviert die automatische Konfiguration

Mit der Version Spring Boot 1.2.0 wurde die Notwendigkeit dieser Annotation reduziert, da es eine alternative Annotation gibt @SpringBootApplication welches die drei Anmerkungen kombiniert @Configuration,@EnableAutoConfiguration und Code>@ComponentScan.

Das Paket der Klasse, mit der Anmerkungen gemacht werden @EnableAutoConfiguration hat eine besondere Bedeutung und wird oft als „Standard“ verwendet. Es wird beispielsweise beim Scannen nach @Entity-Klassen verwendet. Es wird generell empfohlen, dass Sie es platzieren @EnableAutoConfiguration in einem Root-Paket, sodass alle Unterpakete und Klassen durchsucht werden können.

Autokonfigurationsklassen sind nur normale @Configuration-annotierte Klassen. Diese werden im erwähnt spring.factories Datei. Der Frühling prüft die spring.factories Dateien im Ordner META-INF in Ihrem Projekt oder Ihrer JAR-Datei, um die Konfigurationsklassen automatisch zu konfigurieren.

@EnableAutoConfiguration-Parameter

Die folgenden Parameter können in dieser Annotation übergeben werden:

  • ausschließen – Schließen Sie die Liste der Klassen von der automatischen Konfiguration aus.
  • ausschließenNamen – Schließen Sie die Liste der vollständig qualifizierten Klassennamen von der automatischen Konfiguration aus. Dieser Parameter wurde seit Spring Boot 1.3.0 hinzugefügt.

Mit den oben genannten Parametern können Sie die Liste der Konfigurationsklassen ausschließen, die nicht automatisch konfiguriert werden müssen.

Hier ist der Beispielausschnitt für die Verwendung der Parameter:

@EnableAutoConfiguration(exclude={Book.class})

Schreiben Sie eine benutzerdefinierte automatische Konfiguration

Ich habe ein sehr einfaches Autokonfigurationsmodul für die Spring-Boot-Anwendung geschrieben. Beachten Sie, dass Sie die automatische Konfiguration als Teil der aktuellen Anwendung schreiben oder die JAR-Datei importieren können. Der wichtige Punkt besteht darin, die Datei spring.factories im Ordner META-INF hinzuzufügen. Dies ist das Standardverhalten der Spring-Anwendung bei der Suche nach dieser Datei.

Hier sind die Schritte zum Schreiben Ihrer eigenen Autokonfigurationsklasse:

1. Erstellen Sie eine @Configuration-Klasse wie folgt:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
@ConditionalOnClass({ String.class })
public class ConfigureDefaults {
	Logger logger = LoggerFactory.getLogger(ConfigureDefaults.class);
	@Bean
	public String cacheManager() {
		logger.info("Configure Defaults");
		return new String("test");
	}
}

2. Erstellen spring.factories Datei wie unten und legen Sie sie unter die META-INF Ordner:

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
net.javabeat.spring.data.autoconfigure.ConfigureDefaults

3. Führen Sie Ihre Spring-Boot-Anwendung aus.

Das merkt man ConfigureDefaults wird aufgerufen und die in diesen Klassen definierten Beans werden für die Verwendung durch die Anwendung konfiguriert. Schauen Sie sich die folgende Projektstruktur an, die ich zum Testen meiner Spring-Boot-Anwendung mit dem benutzerdefinierten Autokonfigurationsmodul verwendet habe.

Automatische Konfiguration von Spring Boot

Automatische Konfiguration von Spring Boot

Kommentar verfassen

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

Nach oben scrollen