Spring Environment: порядок системных свойств и systemEnvironment

Можно ли контролировать порядок разрешения из Spring Environment из базовых PropertySources?

Например.

У меня есть переменная среды ОС

ENV key=os

и запустить Java с системной переменной среды

java -Dkey=system

Какой вывод у метода Invoking m на боб класса A? Как изменить порядок сканирования 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 ответ

Я нашел ответ, извините за неудобства:

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

`` `` В дополнение к обычным функциям ConfigurableEnvironment, таким как разрешение свойств и операции, связанные с профилем, эта реализация настраивает два источника свойств по умолчанию для поиска в следующем порядке:

system properties
system environment variables 

То есть, если ключ "xyz" присутствует как в системных свойствах JVM, так и в наборе переменных среды для текущего процесса, значение ключа "xyz" из системных свойств вернется из вызова environment.getProperty. ("XYZ"). Этот порядок выбран по умолчанию, поскольку системные свойства относятся к каждой JVM, в то время как переменные среды могут быть одинаковыми во многих JVM в данной системе. Задание приоритета свойств системы позволяет переопределять переменные среды для каждого JVM.

Эти источники свойств по умолчанию могут быть удалены, переупорядочены или заменены; и дополнительные источники свойств могут быть добавлены с использованием экземпляра MutablePropertySources, доступного из AbstractEnvironment.getPropertySources(). Посмотрите ConfigurableEnvironment Javadoc для примеров использования. ```` `

Другие вопросы по тегам