使用pom.xml加载属性文件并在applicationContext.xml中创建占位符的区别

时间:2013-10-21 19:11:37

标签: java spring-mvc maven-3

我有一个基于环境加载的属性文件。我在applicationContext.xml中创建了一个占位符

<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations">
        <list>
            <value>classpath:environment-${buildProfile}.properties</value>
        </list>
    </property>
</bean>

还有另一种方法可以通过Maven加载此文件。

你可以建议我加载一个属性文件的更好方法吗?这有什么性能差异吗?

1 个答案:

答案 0 :(得分:1)

两者之间存在很大差异。主要是,当您在Maven中使用过滤器进行属性替换时,占位符在文件中被物理替换所需的值。因此,您部署的工件具有“烘焙”配置可以这么说。但是,使用Spring的属性占位符允许您在运行时加载这些属性。这允许您部署工件并延迟配置直到运行时。这实际上取决于您的业务案例,但我个人的偏好是尽可能避免Maven过滤,而是依赖于运行时配置,仅仅因为我喜欢从Maven构建中生成单个工件,并且如果您更改基于的属性例如,您要定位的环境,您必须为每个环境生成不同的工件。适用于所有环境的单个工件,运行时加载的配置可能因环境(如dev,qa和production)而异,从而实现更清晰的部署。它还允许您在访问受限的服务器上配置可能敏感的属性,例如数据库连接的密码,以便有限数量的人知道此类敏感信息。