为了账号安全,请及时绑定邮箱和手机立即绑定

Spring 系统属性过早解决

Spring 系统属性过早解决

侃侃无极 2021-08-13 17:03:25
我在 Web 应用程序的 Spring 3.2.14.RELEASE 中使用 PropertyPlaceholderConfigurer。我的 PropertyContext.xml 文件中有以下部分。    <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">    <property name="properties">        <props>            <prop key="hibernate.dialect">org.hibernate.dialect.SQLServer2008Dialect</prop>            <prop key="hibernate.show_sql">false</prop>        </props>    </property>    <property name="locations">        <list>            <value>classpath:globalDefinitions.properties</value>            <value>file:${user.home}/myapplication.properties</value>        </list>    </property>    <property name="ignoreResourceNotFound" value="true"/></bean>当我跑mvn clean install -DskipTests=true我打开生成的 war 文件,看到第二行的location值已经解析为我的笔记本电脑的${user.home}。我期待它在创建 Spring Context 时发生。我们正在构建服务器上构建 war 文件,然后将其传输到测试/生产机器,因此当我们有不同的 ${user.home} 值时会给我们带来麻烦。我做错了什么?这是预期的行为还是我有其他一些 Maven 插件干扰(我需要检查)?
查看完整描述

1 回答

?
叮当猫咪

TA贡献1776条经验 获得超12个赞

问题是 Maven 资源插件处理 src/main/recources 下的文件并在构建阶段评估 ${user.home} 值。(感谢 @BackSlash)

所以我在 maven 资源插件中禁用了对 PropertyContext 的过滤,它开始按预期运行。


查看完整回答
反对 回复 2021-08-13
  • 1 回答
  • 0 关注
  • 197 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信