Поскольку префикс необходим для управления свойствами среды, это можно сделать с помощью системных переменных (вместо deploy.env
свойства в вашем примере):
<value>classpath:properties/${ENV_SYSTEM:dev}/client.properties</value>
В этом случае он всегда будет выглядеть под:
<value>classpath:properties/dev/client.properties</value>
по умолчанию, если не установлена системная переменная ENV_SYSTEM
.Например, если для него установлено значение «qa», оно будет выглядеть автоматически следующим образом:
<value>classpath:properties/qa/client.properties</value>
Другой подход, если вы готовы немного «заглянуть в будущее», - это использовать Spring 3.1 функция PROFILE , где бины могут быть специфическими для профиля.Например:
<beans profile="dev">
<jdbc:embedded-database id="dataSource">
<jdbc:script location="classpath:com/bank/config/sql/schema.sql"/>
<jdbc:script location="classpath:com/bank/config/sql/test-data.sql"/>
</jdbc:embedded-database>
</beans>
Этот dataSource
будет загружен только в том случае, если для профиля установлено значение dev
:
GenericXmlApplicationContext ctx = new GenericXmlApplicationContext();
ctx.getEnvironment().setActiveProfiles( "dev" );
ctx.load( "classpath:/org/boom/bang/config/xml/*-config.xml" );
ctx.refresh();