Различные конфигурационные файлы Spring для разных сборок - PullRequest
2 голосов
/ 31 января 2011

В приложении Spring я настроил app-security.xml для управления всеми проблемами безопасности.Тем не менее, производство будет использовать SSO, где, как и на локальном компьютере, я бы хотел обычную аутентификацию старого пользователя.У меня также есть две локальные машины - для одной, проект построен IntelliJ Idea, а для другой - Ant, производящий WAR.Производственная система будет построена с использованием Ant.

Как мне организовать свой проект, чтобы можно было удобно разрабатывать, а также иметь возможность создавать производственную систему?

Ответы [ 6 ]

2 голосов
/ 31 января 2011

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

<import resource="${resource}" />

Бин PropertyPlaceHolderConfigurer сканирует конфигурацию xml на наличие переменных, таких как ${resource}, и заменяет их на основе настроек из файла свойств.Это предполагает, что у вас есть отдельные значения в вашем файле свойств для производства и разработки.

Подсказка для будущего проекта - попробовать maven.Там есть функция filtering, которая позволяет вам определять пользовательские свойства на основе профилей, очень аккуратные и полезные.

1 голос
/ 31 января 2011

Я недавно использовал этот подход для решения аналогичной проблемы. Я использовал новую функцию Spring 3 - язык выражений. Это позволяет вам сделать что-то вроде этого:

<bean class="com.my.AuthManager">
    <property name="authProvider" 
              ref="#{systemProperties['isDevelopment'] ? 'localProvider' : 'ssoProvider'}" />
</bean>

<bean id="localProvider" lazy-init="true" ... />
<bean id="ssoProvider" lazy-init="true" ... />

В этом случае вы можете запустить JVM с -DisDevelopment=true, и будет использоваться localProvider. С другой стороны, ssoProvider не будет даже создан, потому что атрибут lazy-init равен true.

0 голосов
/ 01 февраля 2011

Мне лично не нравится иметь разные WAR-файлы для каждой среды. Это большое СУХОЕ нарушение. Spring 3.1 наконец решит эту проблему в основном. В то же время вы можете использовать подход Spring EL, предложенный Easy Angel, или (мое предпочтение) использовать @Bean с кодом для переключения между различными реализациями.

0 голосов
/ 31 января 2011

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

0 голосов
/ 31 января 2011

Если вы можете перейти на Spring 3.1, то он имеет встроенную поддержку профилей, специфичных для среды

«Профили среды» позволят разрешение заполнителя на основе указанное имя среды (или имена). Это позволяет другую конфигурацию например, в разработке и производстве, не имея двух разных артефакты развертывания. Я думаю он тоже упомянул абстракцию среды, который я предполагаю, будет для доступа та же конфигурация программно.

Если вы работаете с более старыми версиями, возможно, вы захотите управлять этим самостоятельно (в основном посредством процесса сборки. Мы используем maven и используем для этого профили maven. Я полагаю, что вы можете сделать то же самое с ant). Вот одна дискуссия по этому вопросу: http://forum.springsource.org/showthread.php?t=12373

0 голосов
/ 31 января 2011

Вы можете использовать файл свойств для настройки для различных сред.

...