Рубрики
Без рубрики

Примечания к пружинным ботинкам

Изучите аннотации Spring Boot.

Автор оригинала: Attila Fejér.

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 classes или @Bean methods.

В следующих разделах мы представим только базовую концепцию, лежащую в основе каждого условия. Для получения дополнительной информации, пожалуйста, посетите эту статью .

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. @Conditionaldatasource

Мы можем заставить 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 .