Spring环境:systemProperties和systemEnvironment

时间:2018-03-22 14:24:09

标签: spring spring-environment

是否可以从基础PropertySources控制Spring Environment的解析顺序?

例如。

我有OS环境变量

ENV key=os

使用系统环境变量

运行java
java -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"));
    }
}

1 个答案:

答案 0 :(得分:0)

我找到了答案,抱歉给您带来不便:

https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/core/env/StandardEnvironment.html

  

````除了ConfigurableEnvironment的常用功能外   例如属性解析和与配置文件相关的操作,这个   实现配置两个要搜索的默认属性源   按以下顺序:

system properties
system environment variables 
     

也就是说,如果JVM系统属性中存在密钥“xyz”   以及当前的环境变量集   进程,系统属性中键“xyz”的值将返回   从对environment.getProperty(“xyz”)的调用。选择此顺序   默认情况下,因为系统属性是per-JVM,而环境   在给定系统上的许多JVM中,变量可能相同。给予   系统属性优先级允许覆盖环境   基于每个JVM的变量。

     

可以删除,重新排序或替换这些默认属性来源;   可以使用以下内容添加其他属性源   MutablePropertySources实例可从   AbstractEnvironment.getPropertySources()。请参阅ConfigurableEnvironment   Javadoc用于示例。 ````