Spring Boot Annotations

Dieser Artikel ist Teil einer Reihe: • Spring Core Annotations

• Spring Web Annotations

• Spring Boot Annotations (aktueller Artikel) • Spring Scheduling Annotations

• Frühlingsdatenanmerkungen

• Anmerkungen zu Spring Bean

1. Übersicht

Spring Boot erleichterte die Konfiguration von Spring durch die automatische Konfiguration.

In diesem kurzen Tutorial werden die Anmerkungen aus den Paketen org.springframework.boot.autoconfigure und org.springframework.boot.autoconfigure.condition erläutert .

2. @SpringBootApplication

Wir verwenden diese Anmerkung, um die Hauptklasse einer Spring Boot-Anwendung zu markieren :

@SpringBootApplication class VehicleFactoryApplication { public static void main(String[] args) { SpringApplication.run(VehicleFactoryApplication.class, args); } }

@SpringBootApplication kapselt die Annotationen @Configuration , @EnableAutoConfiguration und @ComponentScan mit ihren Standardattributen.

3. @EnableAutoConfiguration

@EnableAutoConfiguration aktiviert , wie der Name schon sagt, die automatische Konfiguration. Dies bedeutet, dass Spring Boot in seinem Klassenpfad nach Beans für die automatische Konfiguration sucht und diese automatisch anwendet.

Beachten Sie, dass wir diese Anmerkung mit @Configuration verwenden müssen :

@Configuration @EnableAutoConfiguration class VehicleFactoryConfig {}

4. Bedingungen für die automatische Konfiguration

Wenn wir unsere benutzerdefinierten Autokonfigurationen schreiben , möchten wir normalerweise, dass Spring sie bedingt verwendet . Dies können wir mit den Anmerkungen in diesem Abschnitt erreichen.

Wir können die Anmerkungen in diesem Abschnitt auf @ Configuration- Klassen oder @ Bean- Methoden platzieren.

In den nächsten Abschnitten werden wir nur das Grundkonzept hinter jeder Bedingung vorstellen. Weitere Informationen finden Sie in diesem Artikel.

4.1. @ConditionalOnClass und @ConditionalOnMissingClass

Unter diesen Bedingungen verwendet Spring die markierte Bean für die automatische Konfiguration nur, wenn die Klasse im Argument der Anmerkung vorhanden ist / fehlt :

@Configuration @ConditionalOnClass(DataSource.class) class MySQLAutoconfiguration { //... }

4.2. @ConditionalOnBean und @ConditionalOnMissingBean

Wir können diese Anmerkungen verwenden, wenn wir Bedingungen definieren möchten, die auf dem Vorhandensein oder Fehlen einer bestimmten Bean basieren :

@Bean @ConditionalOnBean(name = "dataSource") LocalContainerEntityManagerFactoryBean entityManagerFactory() { // ... }

4.3. @ConditionalOnProperty

Mit dieser Anmerkung können wir Bedingungen für die Werte von Eigenschaften festlegen :

@Bean @ConditionalOnProperty( name = "usemysql", havingValue = "local" ) DataSource dataSource() { // ... }

4.4. @ConditionalOnResource

Wir können Spring dazu bringen, eine Definition nur dann zu verwenden, wenn eine bestimmte Ressource vorhanden ist :

@ConditionalOnResource(resources = "classpath:mysql.properties") Properties additionalProperties() { // ... }

4.5. @ConditionalOnWebApplication und @ConditionalOnNotWebApplication

Mit diesen Anmerkungen können wir Bedingungen erstellen, die darauf basieren, ob die aktuelle Anwendung eine Webanwendung ist oder nicht :

@ConditionalOnWebApplication HealthCheckController healthCheckController() { // ... }

4.6. @ConditionalExpression

Wir können diese Anmerkung in komplexeren Situationen verwenden. Spring verwendet die markierte Definition, wenn der SpEL-Ausdruck als wahr ausgewertet wird :

@Bean @ConditionalOnExpression("${usemysql} && ${mysqlserver == 'local'}") DataSource dataSource() { // ... }

4.7. @Bedingt

Für noch komplexere Bedingungen können wir eine Klasse erstellen, die die benutzerdefinierte Bedingung bewertet . Wir weisen Spring an, diese benutzerdefinierte Bedingung mit @Conditional zu verwenden :

@Conditional(HibernateCondition.class) Properties additionalProperties() { //... }

5. Schlussfolgerung

In diesem Artikel haben wir einen Überblick darüber erhalten, wie wir den automatischen Konfigurationsprozess optimieren und Bedingungen für benutzerdefinierte automatische Konfigurations-Beans bereitstellen können.

Wie üblich sind die Beispiele auf GitHub verfügbar.

Weiter » Spring Scheduling Annotations « Vorherige Spring Web Annotations