Переключение контекста приложения spring или классов Java Impl с использованием профилей maven

Я знаю, что на вопрос, который я задаю, нужно где-то ответить, но я не могу найти пример в сети с некоторыми рекомендациями.

Я хочу заменить определение bean-компонента Spring 3.0 при сборке и во время выполнения на общую кодовую базу. Я также использую профили Maven для создания разных версий одного и того же кода.

В настоящее время мой bean def

<bean id="somebean" class="com.x.SomeImpl" > 

Мне нужно будет заменить и развернуть его в некоторых случаях, как

<bean id="somebean" class="com.x.SomeOtherImpl" > 

Теперь подходы, о которых я думаю,

1) Используйте профили Maven, чтобы переключить полный applicationContext.xml на какой-либо другой applicationContextB.xml на основе профиля Maven.

2) Как-то использовать профили Maven? замените только определение идентификатора компонента на "somebean"

Мои вопросы:

а) Как можно реализовать вариант 2?

б) Эти подходы по-прежнему компилируют и упаковывают как SomeImpl, так и SomeOtherImpl во время сборки. Как я могу выбрать для компиляции и упаковки в EAR только один, а не другой?

Я знаю, что в Spring 3.1 есть профили env для bean-компонентов, но в настоящее время это не вариант.


person shinynewbike    schedule 29.03.2012    source источник


Ответы (3)


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

person Raghuram    schedule 29.03.2012
comment
Правильно - так это объясняет часть (а). любая идея, как я могу выбирать файлы Java для включения/исключения в EAR - person shinynewbike; 29.03.2012
comment
Будьте осторожны, чтобы не получить непредсказуемые сборки, особенно в многомодульных проектах, если у вас может быть один и тот же двоичный артефакт в локальном репо с разными запеченными файлами конфигурации в зависимости от того, с каким профилем вы строите. Самый простой способ избежать этого — пометить артефакт по-разному в каждом профиле. - person artbristol; 29.03.2012

Обратите внимание на вспомогательный модуль сборки Maven и добавьте -источник.

Вы можете комбинировать профили и Build Helper Plugin (цель add-source), чтобы добавить необходимые классы в обоих случаях.

person amuniz    schedule 02.04.2012

вы можете импортировать несколько файлов конфигурации в свою конфигурацию следующим образом:

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">    
    <import resource="applicationContextA.xml"/>
    <import resource="applicationContextB"/>
</beans>

Для переключения вы можете использовать профили Spring.

person abshar    schedule 10.03.2016