Анотации на пролетното зареждане

Тази статия е част от поредица: • Spring Core Annotations

• Пролетни уеб анотации

• Анотации за пролетно зареждане (текуща статия) • Анотации за пролетно планиране

• Пролетни анотации на данни

• Анотации на пролетен боб

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.

Напред » Пролетни анотации за планиране « Предишни пролетни анотации от пролетта