• Пролетни уеб анотации
• Анотации за пролетно зареждане (текуща статия) • Анотации за пролетно планиране
• Пролетни анотации на данни
• Анотации на пролетен боб
1. Общ преглед
Spring Boot улесни конфигурирането на Spring с функцията за автоматично конфигуриране.
В този бърз урок ще изследваме поясненията от пакетите org.springframework.boot.autoconfigure и org.springframework.boot.autoconfigure.condition .
2. @SpringBootApplication
Използваме тази анотация, за да маркираме основния клас на приложението Spring Boot :
@SpringBootApplication class VehicleFactoryApplication { public static void main(String[] args) { SpringApplication.run(VehicleFactoryApplication.class, args); } }
@SpringBootApplication капсулира @Configuration , @EnableAutoConfiguration и @ComponentScan анотации с техните атрибути по подразбиране.
3. @EnableAutoConfiguration
@EnableAutoConfiguration , както казва името му, позволява автоматично конфигуриране. Това означава, че Spring Boot търси компоненти за автоматично конфигуриране в своя път на класа и автоматично ги прилага.
Имайте предвид, че трябва да използваме тази анотация с @Configuration :
@Configuration @EnableAutoConfiguration class VehicleFactoryConfig {}
4. Условия за автоматично конфигуриране
Обикновено, когато пишем нашите персонализирани автоматични конфигурации , ние искаме Spring да ги използва условно . Можем да постигнем това с поясненията в този раздел.
Ние можем да поставите пояснителните бележки в този раздел на @Configuration класове или @Bean методи.
В следващите раздели ще представим само основната концепция зад всяко условие. За допълнителна информация, моля, посетете тази статия.
4.1. @ConditionalOnClass и @ConditionalOnMissingClass
Използвайки тези условия, Spring ще използва маркирания бин за автоматично конфигуриране само ако класът в аргумента на анотацията присъства / липсва :
@Configuration @ConditionalOnClass(DataSource.class) class MySQLAutoconfiguration { //... }
4.2. @ConditionalOnBean и @ConditionalOnMissingBean
Можем да използваме тези пояснения, когато искаме да дефинираме условия въз основа на наличието или отсъствието на конкретен боб :
@Bean @ConditionalOnBean(name = "dataSource") LocalContainerEntityManagerFactoryBean entityManagerFactory() { // ... }
4.3. @ConditionalOnProperty
С тази анотация можем да създадем условия за стойностите на свойствата :
@Bean @ConditionalOnProperty( name = "usemysql", havingValue = "local" ) DataSource dataSource() { // ... }
4.4. @ConditionalOnResource
Можем да направим Spring да използва дефиниция само когато присъства определен ресурс :
@ConditionalOnResource(resources = "classpath:mysql.properties") Properties additionalProperties() { // ... }
4.5. @ConditionalOnWebApplication и @ConditionalOnNotWebApplication
С тези пояснения можем да създадем условия въз основа на това дали текущото приложение е или не е уеб приложение :
@ConditionalOnWebApplication HealthCheckController healthCheckController() { // ... }
4.6. @ConditionalExpression
Можем да използваме тази анотация в по-сложни ситуации. Spring ще използва маркираната дефиниция, когато изразът SpEL е оценен на true :
@Bean @ConditionalOnExpression("${usemysql} && ${mysqlserver == 'local'}") DataSource dataSource() { // ... }
4.7. @ Условно
За още по-сложни условия можем да създадем клас, оценяващ персонализираното състояние . Казваме на Spring да използва това персонализирано условие с @Conditional :
@Conditional(HibernateCondition.class) Properties additionalProperties() { //... }
5. Заключение
В тази статия видяхме преглед на това как можем да прецизираме процеса на автоматично конфигуриране и да осигурим условия за персонализирани компоненти за автоматично конфигуриране.
Както обикновено, примерите са достъпни в GitHub.
Напред » Пролетни анотации за планиране « Предишни пролетни анотации от пролетта