Annotaties Spring Boot

Dit artikel maakt deel uit van een reeks: • Spring Core Annotations

• Spring Web-annotaties

• Spring Boot-annotaties (huidig ​​artikel) • Spring Scheduling-annotaties

• Spring Data-annotaties

• Spring Bean-annotaties

1. Overzicht

Spring Boot maakte het configureren van Spring eenvoudiger dankzij de automatische configuratiefunctie.

In deze korte tutorial verkennen we de annotaties van de org.springframework.boot.autoconfigure en org.springframework.boot.autoconfigure.condition pakketjes.

2. @SpringBootApplication

We gebruiken deze annotatie om markeer de hoofdklasse van een Spring Boot-applicatie:

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

@SpringBootApplication kapselt in @Configuratie, @EnableAutoConfiguration, en @BuienRadarNL annotaties met hun standaardattributen.

3. @EnableAutoConfiguration

@EnableAutoConfiguration, zoals de naam al zegt, maakt automatische configuratie mogelijk. Het betekent dat Spring Boot zoekt naar bonen voor automatische configuratie op zijn klassepad en past ze automatisch toe.

Merk op dat we deze annotatie moeten gebruiken met @Configuratie:

@Configuration @EnableAutoConfiguration-klasse VehicleFactoryConfig {}

4. Auto-configuratievoorwaarden

Meestal, wanneer we onze aangepaste automatische configuraties, we willen dat de lente gebruik ze voorwaardelijk. We kunnen dit bereiken met de annotaties in deze sectie.

We kunnen de annotaties in deze sectie plaatsen op @Configuratie klassen of @Boon methoden.

In de volgende secties introduceren we alleen het basisconcept achter elke voorwaarde. Bezoek dit artikel voor meer informatie.

4.1. @ConditionalOnClass en @ConditionalOnMissingClass

Onder deze voorwaarden zal Spring alleen de gemarkeerde autoconfiguratieboon gebruiken als de klasse in de annotatie argument is aanwezig / afwezig:

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

4.2. @ConditionalOnBean en @ConditionalOnMissingBean

We kunnen deze annotaties gebruiken als we voorwaarden willen definiëren op basis van de aanwezigheid of afwezigheid van een specifieke boon:

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

4.3. @ConditionalOnProperty

Met deze annotatie kunnen we voorwaarden stellen aan de waarden van eigenschappen:

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

4.4. @ConditionalOnResource

We kunnen ervoor zorgen dat Spring alleen een definitie gebruikt als deze specifiek is resource is aanwezig:

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

4.5. @ConditionalOnWebApplication en @ConditionalOnNotWebApplication

Met deze annotaties kunnen we voorwaarden creëren op basis van of de huidige applicatie is al dan niet een webapplicatie:

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

4.6. @ConditionalExpression

We kunnen deze annotatie gebruiken in meer complexe situaties. Spring gebruikt de gemarkeerde definitie wanneer de SpEL-expressie wordt geëvalueerd als waar:

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

4.7. @Voorwaardelijk

Voor nog complexere omstandigheden kunnen we een klasse maken die de aangepaste staat. We vertellen Spring om deze aangepaste conditie te gebruiken @Voorwaardelijk:

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

5. Conclusie

In dit artikel hebben we een overzicht gezien van hoe we het autoconfiguratieproces kunnen verfijnen en voorwaarden kunnen bieden voor aangepaste autoconfiguratiebeans.

Zoals gewoonlijk zijn de voorbeelden beschikbaar op GitHub.

De volgende » Annotaties voor voorjaarsplanning « Eerdere voorjaarswebannotaties