Использование аннотации Conditional в Spring

Контекст Spring — это контейнер различных бинов: как самого spring-а, так и пользовательских. Аннотация @Conditional — это гибкий инструмент управления контекстом Spring.

Аннотация @Conditional является более тонкой «настройкой» контекста по сравнению с использованием профилей.

Примеры, когда может понадобиться аннотация @Conditional :

  • возможность изменять контекст приложения без перекомпиляции (отслеживая значение какого-либо параметра в файле свойств)
  • при работе в несинхронизированных командах (кто-то не успевает выполнить доработку, а у кого-то функционал уже готов — контекст должен это учитывать)

Объявление аннотации @Conditional :

@Target(value={TYPE,METHOD})
@Retention(value=RUNTIME)
@Documented
public @interface Conditional {
Class <? extends Condition> []
}

Condition — это функциональный интерфейс, который содержит метод

boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata)
В аннотацию @Conditional может быть передано несколько классов-реализаций интерфейса Condition

В методе matches через аргумент context можно получить доступ к контейнеру Spring-а и к свойствам приложения , а через аргумент metadata — доступ к аннотациям класса либо метода, который аннотирован @Conditional

Примеры использования аннотации @Conditional

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *