Anotaciones de Spring Boot

Este artículo es parte de una serie: • Spring Core Annotations

• Anotaciones web de Spring

• Spring Boot Annotations (artículo actual) • Spring Scheduling Annotations

• Anotaciones de datos de primavera

• Anotaciones de Spring Bean

1. Información general

Spring Boot facilitó la configuración de Spring con su función de configuración automática.

En este tutorial rápido, exploraremos las anotaciones de los paquetes org.springframework.boot.autoconfigure y org.springframework.boot.autoconfigure.condition .

2. @SpringBootApplication

Usamos esta anotación para marcar la clase principal de una aplicación Spring Boot :

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

@SpringBootApplication encapsula las anotaciones @Configuration , @EnableAutoConfiguration y @ComponentScan con sus atributos predeterminados.

3. @EnableAutoConfiguration

@EnableAutoConfiguration , como su nombre lo indica, habilita la configuración automática. Significa que Spring Boot busca beans de configuración automática en su classpath y los aplica automáticamente.

Tenga en cuenta que tenemos que usar esta anotación con @Configuration :

@Configuration @EnableAutoConfiguration class VehicleFactoryConfig {}

4. Condiciones de configuración automática

Por lo general, cuando escribimos nuestras configuraciones automáticas personalizadas , queremos que Spring las use de manera condicional . Podemos lograr esto con las anotaciones en esta sección.

Podemos colocar las anotaciones en esta sección sobre @Configuration clases o @Bean métodos.

En las siguientes secciones, solo presentaremos el concepto básico detrás de cada condición. Para obtener más información, visite este artículo.

4.1. @ConditionalOnClass y @ConditionalOnMissingClass

Usando estas condiciones, Spring solo usará el bean de configuración automática marcado si la clase en el argumento de la anotación está presente / ausente :

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

4.2. @ConditionalOnBean y @ConditionalOnMissingBean

Podemos usar estas anotaciones cuando queremos definir condiciones basadas en la presencia o ausencia de un bean específico :

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

4.3. @ConditionalOnProperty

Con esta anotación, podemos hacer condiciones sobre los valores de las propiedades :

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

4.4. @ConditionalOnResource

Podemos hacer que Spring use una definición solo cuando un recurso específico está presente :

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

4.5. @ConditionalOnWebApplication y @ConditionalOnNotWebApplication

Con estas anotaciones, podemos crear condiciones basadas en si la aplicación actual es o no es una aplicación web :

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

4.6. @Expresión condicional

Podemos utilizar esta anotación en situaciones más complejas. Spring usará la definición marcada cuando la expresión SpEL se evalúe como verdadera :

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

4.7. @Condicional

Para condiciones aún más complejas, podemos crear una clase que evalúe la condición personalizada . Le decimos a Spring que use esta condición personalizada con @Conditional :

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

5. Conclusión

En este artículo, vimos una descripción general de cómo podemos ajustar el proceso de configuración automática y proporcionar condiciones para los beans de configuración automática personalizados.

Como de costumbre, los ejemplos están disponibles en GitHub.

Siguiente » Anotaciones de programación de Spring « Anotaciones Web de Spring anteriores