Last updated
Last updated
Spring의 Environment
추상화는 속성 소스의 구성 가능한 계층에 대한 검색 작업을 제공합니다. 다음 목록을 고려하십시오.
이전 snippet에서는 my-property
속성이 현재 환경에 정의되어 있는지 여부를 Spring에 묻는 높은 수준의 방법을 살펴 본다. 이 질문에 대답하기 위해 Environment
객체는 객체 집합을 검색합니다. PropertySource
는 키 - 값 쌍의 소스에 대한 간단한 추상화이며 Spring의 는 두 개의 PropertySource 객체 (하나는 JVM 시스템 속성 세트 (System.getProperties()
)를 나타내는 컨테이너 인스턴스이고 다른 하나는 시스템 환경 변수 세트System.getenv()
를 나타내는 하나의 PropertySource 객체로 구성됩니다).
구체적으로, StandardEnvironment를 사용하면 런타임에 my-property 시스템 등록 정보 또는 my-propertyi 환경 변수가있는 경우 env.containsProperty ( "my-property")를 호출하면 true가 반환됩니다.
가장 중요한 점은 전체 메커니즘을 구성 할 수 있다는 것입니다. 아마도ㅜ 이 검색에 통합하려는 속성의 사용자 지정 소스가있을 수 있습니다. 이렇게하려면 구현하고 자신의 PropertySource
인스턴스를 현재 PropertySourcesEnvironment
집합에 추가하십시오 . 다음 예제에서는이를 수행하는 방법을 보여줍니다.
앞의 코드에서 MyPropertySource는 검색에서 가장 높은 우선 순위로 추가되었습니다. my-property 속성이 있으면이 속성이 감지되어 다른 PropertySource의 my-property 속성을 사용하여 반환됩니다. MutablePropertySources API는 일련의 속성 소스를 정밀하게 조작 할 수있는 여러 메서드를 제공합니다.
이러한 기본 속성 소스는 StandardEnvironment
독립 실행 형 응용 프로그램에서 사용하기 위해 제공됩니다.StandardServletEnvironment
서블릿 구성 및 서블릿 컨텍스트 매개 변수를 포함하는 추가 기본 등록 정보 소스가 채워집니다. 선택적으로 JndiPropertySource
사용. 자세한 것은, javadoc를 참조 해주세요.
수행 된 검색은 계층 적입니다. 기본적으로 시스템 특성은 환경 변수보다 우선합니다. 따라서 my-property
호출하는 동안 두 속성 모두에 속성이 설정 env.getProperty("my-property")
되면 시스템 속성 값이 "이기고"반환됩니다. 속성 값은 병합되지 않고 선행 항목에 의해 완전히 오버라이드됩니다.
공통 StandardServletEnvironment
인 경우 전체 계층 구조는 다음과 같으며 상단에 우선 순위가 가장 높은 항목이 있습니다.
ServletConfig 매개 변수 (적용 가능한 경우 - 예 : DispatcherServlet
컨텍스트의 경우 )
ServletContext 매개 변수 (web.xml 컨텍스트 - 매개 변수 항목)
JNDI 환경 변수 ( java:comp/env/
항목)
JVM 시스템 등록 정보 ( -D
명령 줄 인수)
JVM 시스템 환경 (운영 체제 환경 변수)