Если вы не хотите экспортировать файл свойств:
Я использую префикс, который представляет мою среду развертывания в моих свойствах. Пример:
#Test url
test.url=http://test.url.com
#Production URL
prod.url=http://prod.url.com
Я определил системное свойство с именем "entorn" в каждой среде (аргумент -D для вызова jvm в сценарии запуска сервера приложений). Значение этого свойства - «test» в моей тестовой среде и «prod» в моей производственной среде.
Затем я определил мой bean-компонент "propertyConfigurer":
<bean id="propertyConfigurer" class="es.indra.ccma.config.EnvironmentPropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:ccma.properties</value>
</list>
</property>
</bean>
Код EnvironmentPropertyPlaceholderConfigurer:
package es.indra.ccma.config;
import java.util.Properties;
import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer;
public class EnvironmentPropertyPlaceholderConfigurer extends
PropertyPlaceholderConfigurer {
private String environment;
final private static String ENV_SYSTEM_PROPERTY = "entorn";
public EnvironmentPropertyPlaceholderConfigurer() {
environment = System.getProperty(ENV_SYSTEM_PROPERTY);
if (environment == null) {
//default environment
environment = "test";
}
}
protected String resolvePlaceholder(String placeholder, Properties props) {
final String envPlaceholder = environment + "." + placeholder;
if (props.containsKey(envPlaceholder)) {
return props.getProperty(envPlaceholder);
} else {
return props.getProperty(placeholder);
}
}
}
Если вы выполняете свой код в среде «test» и хотите получить значение свойства «url», propertyConfigurer ищет файл «test.url» в ваших файлах свойств, и если свойство «test.url» не найдено он будет искать свойство "url".
Это не моя идея Я следовал этому уроку , чтобы подтвердить это.