我有.properties文件中的属性列表。
现在我正在使用PropertyPlaceholderConfigurer
管理这些属性文件。
我想从其中一个方法访问属性值。 任何人都可以建议如何实现这一目标吗?
例如
connection.properties
dev.url = "http://localhost:8080/"
uat.url = "http://xyz.com"
现在我通过指定connection.properties
配置了`PropertyPlaceholderConfigurer bean我有一种方法可以根据部署模式读取网址 所以基于部署模式,我想使用属性文件更改URL。
如果这是正确的方法,请告诉我。
如果您有任何建议,请给予。
答案 0 :(得分:3)
PropertyPlaceholderConfigurer
does not expose其属性。但是,您可以使用例如,重新读取属性文件。 PropertiesLoadUtils
:
PropertiesLoaderUtils.loadProperties(
new ClassPathResource("/connection.properties"));
答案 1 :(得分:2)
也许您正在寻找类似@Value注释的内容?
private @Value("#{connection.dev.url}") String myURL;
答案 2 :(得分:0)
不清楚你在寻找什么,但我有实用程序,它根据运行环境(dev,prod)加载属性
public class EnvironmentalPlaceHolderConfigurer extends PropertyPlaceholderConfigurer
implements InitializingBean {
private Resource overrideLocation;
public void setOverrideLocation(Resource overrideLocation) {
this.overrideLocation = overrideLocation;
}
if(overrideLocation != null){
if( overrideLocation.exists())
super.setLocation(overrideLocation);
else{
logger.warn("Unbale to find "+overrideLocation.getFilename() +" using default");
}
}else{
logger.warn("Override location not set, using default settings");
}
}
@Override
public void afterPropertiesSet() throws Exception {
setProperLocation();
}
然后你需要将bean定义为
<bean class="com.commons.config.EnvironmentalPlaceHolderConfigurer">
<property name="overrideLocation" value="classpath:/jms/${ENV_NAME}-jms.properties" />
<property name="location" value="classpath:/jms/jms.properties" />
</bean>
您需要在计算机上定义一个环境条目,其密钥为“ENV_NAME”
例如:ENV_NAME = prod
对于windows环境变量以及.profile中的unix条目。
您需要以下列方式维护每个环境的属性 prod-jms.properties uat-jms.properties