是否可以从基础PropertySources控制Spring Environment的解析顺序?
例如。
我有OS环境变量
ENV key=os
使用系统环境变量
运行javajava -Dkey=system
类A的bean上的Invoking方法的输出是什么? 如何更改扫描SystemEnvironmentPropertySource或MapPropertySource [name ='systemProperties']的顺序?
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Component;
import javax.inject.Inject;
@Component
class A{
@Inject
private Environment environment;
public void m(){
System.out.println(environment.getProperty("key"));
}
}
答案 0 :(得分:0)
我找到了答案,抱歉给您带来不便:
````除了ConfigurableEnvironment的常用功能外 例如属性解析和与配置文件相关的操作,这个 实现配置两个要搜索的默认属性源 按以下顺序:
system properties system environment variables
也就是说,如果JVM系统属性中存在密钥“xyz” 以及当前的环境变量集 进程,系统属性中键“xyz”的值将返回 从对environment.getProperty(“xyz”)的调用。选择此顺序 默认情况下,因为系统属性是per-JVM,而环境 在给定系统上的许多JVM中,变量可能相同。给予 系统属性优先级允许覆盖环境 基于每个JVM的变量。
可以删除,重新排序或替换这些默认属性来源; 可以使用以下内容添加其他属性源 MutablePropertySources实例可从 AbstractEnvironment.getPropertySources()。请参阅ConfigurableEnvironment Javadoc用于示例。 ````