1

Я пытаюсь понять сценарий, который мне кажется очень простым при использовании контекста приложения Spring xml, но при использовании аннотаций он выглядит более неопределенным.Создание различных контекстов с помощью весенних аннотаций

Скажем, у меня есть класс, который выглядит примерно так (. Это все ради примера Не ​​обращайте внимание на имена классов, и т.д. ...):

@Component 
public class BusinessLogicImpl implements BusinessLogic { 
    @Autowire 
    BeanThatTalksWithDataSource beanThatTalksWithDataSource; 

    @Autowire 
    BeanThatDoesSomeWork beanThatDoesSomeWork; 

} 

И тогда я есть какой-то другой компонент, использующий этот компонент

@Component 
public class MainLogicImpl implements MainLogic { 

    @Autowire  
    BusinesLogic businessLogic; 

} 

Давайте предположим, что BeanThatTalksWithDataSource имеет 2 реализации - тот, который делает работу с источником данных файловой системы, а другой, который работает с БД. Также BeanThatDoesSomeWork имеет две различные реализации.

Я хочу создать 4 различные конфигурации, которые включают в себя каждую комбинацию из 2-х реализаций BeanThatTalksWithDataSource с 2 реализациями BeanThatDoesSomeWork и в конце концов, чтобы загрузить нужный вариант в MainLogicImpl.

В xml это довольно просто - я создаю 4 xml-файла, которые содержат 4 различных возможных контекста. Что было бы эквивалентом такой вещи при работе с аннотациями?

Я хотел бы подчеркнуть, что я говорю об аннотации, а не о классе @Configuration. Я пытаюсь выяснить, возможно ли это только с аннотациями.

ответ

1

Аннотировать все реализации с помощью @Profile и при запуске приложения установить активные профили. Теперь, когда компонентное сканирование ударяет в него, вы будете получать только компоненты, которые удовлетворяют активным профилям.

Ссылки

@Profile (javadoc)

1

Вы можете разместить различные реализации в 4 разных пакетах и ​​выбрать различные пакеты для сканирования компонентов.

Смежные вопросы