Annotations de démarrage de printemps

Cet article fait partie d'une série: • Annotations Spring Core

• Annotations Web de printemps

• Annotations Spring Boot (article actuel) • Annotations Spring Scheduling

• Annotations de données Spring

• Annotations Spring Bean

1. Vue d'ensemble

Spring Boot a simplifié la configuration de Spring grâce à sa fonction de configuration automatique.

Dans ce rapide tutoriel, nous explorerons les annotations des packages org.springframework.boot.autoconfigure et org.springframework.boot.autoconfigure.condition .

2. @SpringBootApplication

Nous utilisons cette annotation pour marquer la classe principale d'une application Spring Boot :

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

@SpringBootApplication encapsule les annotations @Configuration , @EnableAutoConfiguration et @ComponentScan avec leurs attributs par défaut.

3. @EnableAutoConfiguration

@EnableAutoConfiguration , comme son nom l'indique, permet la configuration automatique. Cela signifie que Spring Boot recherche les beans de configuration automatique sur son chemin de classe et les applique automatiquement.

Notez que nous devons utiliser cette annotation avec @Configuration :

@Configuration @EnableAutoConfiguration class VehicleFactoryConfig {}

4. Conditions de configuration automatique

Habituellement, lorsque nous écrivons nos configurations automatiques personnalisées , nous voulons que Spring les utilise de manière conditionnelle . Nous pouvons y parvenir avec les annotations de cette section.

Nous pouvons placer les annotations dans cette section sur @Configuration classes ou @Bean méthodes.

Dans les sections suivantes, nous présenterons uniquement le concept de base de chaque condition. Pour plus d'informations, veuillez consulter cet article.

4.1. @ConditionalOnClass et @ConditionalOnMissingClass

En utilisant ces conditions, Spring n'utilisera le bean de configuration automatique marqué que si la classe dans l' argument de l'annotation est présente / absente :

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

4.2. @ConditionalOnBean et @ConditionalOnMissingBean

Nous pouvons utiliser ces annotations lorsque nous voulons définir des conditions basées sur la présence ou l'absence d'un bean spécifique :

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

4.3. @ConditionalOnProperty

Avec cette annotation, nous pouvons faire des conditions sur les valeurs des propriétés :

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

4.4. @ConditionalOnResource

Nous pouvons faire en sorte que Spring n'utilise une définition que lorsqu'une ressource spécifique est présente :

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

4.5. @ConditionalOnWebApplication et @ConditionalOnNotWebApplication

Avec ces annotations, nous pouvons créer des conditions en fonction du fait que l' application actuelle est ou non une application Web :

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

4.6. @ConditionalExpression

Nous pouvons utiliser cette annotation dans des situations plus complexes. Spring utilisera la définition marquée lorsque l' expression SpEL est évaluée à true :

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

4.7. @Conditionnel

Pour des conditions encore plus complexes, nous pouvons créer une classe évaluant la condition personnalisée . Nous disons à Spring d'utiliser cette condition personnalisée avec @Conditional :

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

5. Conclusion

Dans cet article, nous avons vu un aperçu de la façon dont nous pouvons affiner le processus de configuration automatique et fournir des conditions pour les beans de configuration automatique personnalisés.

Comme d'habitude, les exemples sont disponibles à l'adresse over sur GitHub.

Suivant » Annotations Spring Scheduling « Précédent Annotations Spring Web