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

标签 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 加载此文件。

您能建议我哪种加载属性文件的更好方法吗?这有什么性能差异吗?

最佳答案

两者之间有很大区别。主要是,当您在 Maven 中使用过滤器进行属性替换时,占位符会在文件中物理替换为所需的值。因此,您部署的工件可以说已经“烘焙”了配置。但是,使用 Spring 的属性占位符可以让您在运行时加载这些属性。这允许您部署工件并将配置延迟到运行时。这实际上取决于您的业务案例,但我个人的偏好是尽可能避免 Maven 过滤,而是依赖运行时配置,只是因为我喜欢从 Maven 构建生成单个工件,并且如果您根据以下条件更改属性,例如,您所针对的环境,您必须为每个环境生成不同的工件。适用于所有环境的单个工件,以及每个环境(如开发、质量保证和生产)可能不同的运行时加载配置,可以实现更干净的部署。它还允许您在访问受限的服务器上配置潜在的敏感属性,例如数据库连接的密码,以便有限数量的人了解此类敏感信息。

关于java - 使用 pom.xml 加载属性文件和在 applicationContext.xml 中创建占位符的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19502763/

相关文章:

java - Spring Security - 用户在 session 销毁时保持身份验证

spring - 将 <option> 值从 JSP 表单发送到 Controller Spring MVC

maven - 将 Maven 配置文件放入外部文件中?

java - 如何使用zk hbox数组?

java - 在 JUnit4 和 Maven 中运行 TestSuite

java - 在 Controller 中读取 requestparam 时出现问题

hadoop - Apache Tez 构建失败

java - 如何强制依赖项包含具有特定版本号的 Artifact

java - 文件路径给出 NullPointer

java - Spring框架连接多个数据库xml JAVA