Проверяет понимание механизма условного создания бинов в Spring с помощью аннотации @Conditional.
Аннотация @Conditional — это механизм Spring, который позволяет управлять созданием бинов на основе произвольных условий. Она применяется к методам @Bean или классам конфигурации. Если условие не выполняется, бин не создаётся, что даёт гибкость в настройке приложения под разные среды.
Для использования нужно создать класс, реализующий интерфейс Condition (из пакета org.springframework.context.annotation). В методе matches возвращается true или false. Затем аннотация @Conditional принимает этот класс как параметр.
public class DevCondition implements Condition {
@Override
public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
String env = context.getEnvironment().getProperty("app.env");
return "dev".equals(env);
}
}
@Configuration
public class AppConfig {
@Bean
@Conditional(DevCondition.class)
public DataSource devDataSource() {
return new EmbeddedDatabaseBuilder().build();
}
}@ConditionalOnClass в Spring Boot).Используйте @Conditional, когда нужно динамически управлять конфигурацией Spring-приложения без изменения кода, особенно в многопрофильных средах или при создании библиотек с опциональными компонентами.