• 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