弹簧3.1 PropertySourcesPlaceholderConfigurer
javadoc说:
此类设计为在弹簧3.1应用中的
PropertyPlaceholderConfigurer
的一般替代品。
但我看不到复制PropertyPlaceholderConfigurer
'S searchSystemenvironment 属性的功能的明显方法,这使配置者在没有系统属性时查找环境变量可以找到占位符的名称。
请注意,我已经看到了很多有关"环境变量"和PropertySourcesPlaceholderConfigurer
的问题,但是我看到的每个人都是实际询问系统属性,而不是环境变量。p>我如何告诉 PropertySourcesPlaceholderConfigurer
使用环境变量回到占位持有人值?
firs要注意的是javadoc
的这个片段任何本地属性(例如,通过
PropertiesLoaderSupport.setProperties(java.util.Properties)
,PropertiesLoaderSupport.setLocations(org.springframework.core.io.Resource...)
等)添加为PropertySource
。本地搜索优先级 属性基于localOverride
属性的值 默认是错误的,含义要搜索本地属性 最后,在所有环境属性源之后。
换句话说, PropertySourcesPlaceholderConfigurer
具有其自己的 local 属性源,默认情况下,在属性源直接在环境中注册的属性来源,即。ConfigurableEnvironment
类型的实例。
ConfigurableEnvironment
和getSystemEnvironment()
中的CC_12的Javadoc继续说
如果当前允许,返回
System.getProperties()
的值SecurityManager
,否则返回将 尝试使用呼叫访问单个键System.getProperty(String)
。请注意,大多数
Environment
实现将包括此系统 属性映射为要搜索的默认PropertySource
。[...]
如果当前允许,返回
的呼叫访问单个键System.getenv()
的值 SecurityManager,否则将返回一个地图实现,将 尝试使用System.getenv(String)
请注意,大多数
Environment
实现将包括此系统 环境图作为要搜索的默认PropertySource
。
这些 Environment
实现是StandardEnvironment
,这是默认的Spring的ApplicationContext
类使用。
这个类Javadoc状态
除了
ConfigurableEnvironment
的通常功能之外 作为财产分辨率和与个人资料相关的操作,此 实现配置两个默认属性源,要搜索 按照以下顺序:
- 系统属性
- 系统环境变量
也就是说,如果键
"xyz"
都存在于JVM系统属性中 以及在当前的环境变量集中 过程,系统属性中的密钥"xyz"
的值将返回 从通话到environment.getProperty("xyz")
。选择此顺序 默认情况下,因为系统属性是每个jvm,而环境 在给定系统上的许多JVM中,变量可能相同。给予 系统属性优先允许对环境的覆盖 每jvm的变量。
这些属性源是可变且可重新排序的。但是,要回答您的问题,默认情况下您要求的行为已提供。