java – 在spring中加载属性文件

我们的一个团队以这种方式实现了加载属性(请参阅下面的伪代码)并建议这种方法是正确的,因为使用它的客户端应用程序可以自由地将属性保存在任何文件中.与广泛使用的propertyplaceholderconfigurer相反.

应用程序的context.xml

<bean class="com.mypackage.Myclass">
<property name="xml" value="classpath:"{com.myapp.myproperty1}"> </property> 
</bean>

config.properties

com.myapp.myproperty1=data.xml

编辑:我应该添加它是data.properties而不是data.xml.我们想要加载一个属性文件(这个属性文件在config.properties中作为“属性”给出.
com.myapp.myproperty1 = data.properties

java类

import org.springframework.core.io.Resource;
public class Myclass {

private Resource xmlField;

// setter & getter methods..

}

使用spring core.io.Resource是对的吗?

另一个原因是客户端应用程序想要加载特定于环境的配置.我建议使用propertyconfigurer并使用maven配置文件生成特定于环境的构建

你能告诉哪一个适合哪种情况?如果它在不同情况下有所不同,请帮助我指出它们?

谢谢

最佳答案
您可以将属性放在任何文件中,仍然使用PropertyPlaceholderConfigurer.这是一个满足您的同事关注和您对环境特定事物的渴望的示例:

<bean id="propertyPlaceholderConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations">
        <list>
            <!-- default settings -->
            <value>classpath:MyCompany.properties</value>
            <!-- environment-specific settings -->
            <value>classpath:MyCompany.${mycompany.env:dev}.properties</value>
            <!-- keep your coworker happy -->
            <value>classpath:${mycoworker}</value>
            <!-- allows emergency reconfiguration via the local file system -->
            <value>file:///${user.home}/MyCompany.properties</value>
        </list>
    </property>
    <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE"/>
    <property name="ignoreResourceNotFound" value="true" />
    <!-- should be validated separately, in case users of the library load additional properties -->
    <property name="ignoreUnresolvablePlaceholders" value="false"/> 
</bean>

如果传入no -D参数,那么您将获取以下属性文件,其中后面的文件中的属性会覆盖先前确定的值.

> MyCompany.properties离开类路径
> MyCompany.dev.properties离开类路径
> $HOME / MyCompany.properties(如果存在)

要在#2的生产配置中交换,只需将-Dmycompany.env = prod传递给java.同样,如果他/她想要,你的同事可以传递-Dmycoworker = / some / path / config.properties.

转载注明原文:java – 在spring中加载属性文件 - 代码日志