栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

.properties文件中的PropertyPlaceholderConfigurer和环境变量

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

.properties文件中的PropertyPlaceholderConfigurer和环境变量

我可能会完全更改解决方案:直接注入系统属性,而不是注入引用系统属性的属性

例如

@Value("#{ systemProperties['JAVA_MY_ENV'] }") private String myVar;

要么

<property name ="myVar" value="#{systemProperties['JAVA_MY_ENV']}"/>

我使用这样的属性占位符配置器

<bean id="propertyConfigurer" >  <property name="locations">    <list>        <value>classpath:someprops.properties</value>    </list>  </property>  <property name="ignoreResourceNotFound" value="true" />  <property name="searchSystemEnvironment" value="true" />  <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />

您还必须记住使用以下命令将参数传递给程序

 -DJAVA_MY_ENV=xyz

这样,当您运行生产版本时,您可以通过一件事,而在运行测试时,您可以通过另一件事。

同样,我经常做的事情是这样的:

  <property name="locations">    <list>      <value>classpath:someprops.properties</value>      <value>classpath:someprops-{environment}.properties</value>    </list>  </property>

环境是prod / stage / test / int / ci /
local(每个环境1个-您现在可能只有2个或3个)。您可以将环境变量传递给程序。无论其在本地PC
/测试上的生产/运行情况如何,任何应相同的属性都应位于someprops.properties属性文件中。特定于环境/运行方式的任何内容都将放在更特定的文件中(除非覆盖机制,否则应将其放置在someprops.properties文件以及默认文件中)

例如在classpath:someprops.properties中

url=www.mysite.com

在classpath:someprops-local.properties中

url=localhost

通过使用此基本思想,您可以以干净的方式将测试和程序的正常运行属性分开。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/428387.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号