Лучший способ указать автопровода кандидата на профиль

В моем весеннем загрузочном приложении для некоторых интерфейсов у меня есть несколько реализаций (обычно "основная реализация" и "реализация для локального тестирования"), которые я использую с разными профилями. Я знаю несколько вариантов, чтобы сказать Spring использовать конкретную реализацию.

  1. добавлять @Profile/@Conditional в класс с пометкой @Component, Плюсы: легко. Минусы: мне не нравится тот факт, что информация о профилях разбросаны по компонентам.
  2. Удалить @Component аннотация от реализации и создания компонентов в профиле @Configuration (@Bean SomeService() { return new DefaultSomeService(); }). Плюсы: требуется больше кода. Cons. Все профильные компоненты расположены в одном месте.
  3. исключать @Component от @ComponentScan (добавив явную пользовательскую аннотацию @IgnoreComponentScan в реализации для предотвращения неоднозначности) и создания компонентов в профильном профиле @Configuration. Близко ко второму варианту, но дает больше ясности для компонента (мы можем сохранить @Repository/@Service аннотаций)

Есть ли другие варианты? Какой способ больше подходит?

0 ответов

Другие вопросы по тегам