24.7 속성대신 yaml 사용하기 - 다시
YAML 은 JSON의 상위 집합이며, 따라서 계층 적 구성 데이터를 지정하는 데 편리한 형식입니다. 이 SpringApplication
클래스는 classpath에 SnakeYAML 라이브러리가 있을 때마다 자동으로 YAML을 속성의 대안으로 지원합니다 .
"Starters"를 사용하면 |
24.7.1 YAML로드
Spring Framework는 YAML 문서를로드하는 데 사용할 수있는 두 가지 편리한 클래스를 제공합니다. YamlPropertiesFactoryBean
로드 YAML로 Properties
하고, YamlMapFactoryBean
A와 부하 YAML Map
.
예를 들어 다음 YAML 문서를 생각해보십시오.
앞의 예는 다음 속성으로 변환됩니다.
YAML리스트는 [index]
역 참조 자 (dereferencers)가있는 등록 정보 키로 표시됩니다 . 예를 들어, 다음 YAML을 고려하십시오.
앞의 예는 다음 속성으로 변환됩니다.
Spring Boot의 Binder
유틸리티 를 사용하여 속성을 바인드하려면 (또는 ) 어떤 @ConfigurationProperties
타입의 타겟 빈에서 프라퍼티를 가질 필요가있다. 그리고 setter를 제공하거나 변경 가능한 값으로 초기화해야한다. 예를 들어 다음 예제는 이전에 표시된 속성에 바인딩합니다.java.util.ListSet
24.7.2 Spring 환경에서 YAML을 속성으로 노출시키기
YamlPropertySourceLoader
클래스는 같은 YAML을 노출하는 데 사용할 수있는 PropertySource
봄에서 Environment
. 이렇게하면 @Value
자리 표시 자 구문을 사용하여 주석 을 사용하여 YAML 속성에 액세스 할 수 있습니다.
24.7.3 다중 프로필 YAML 문서
spring.profiles
다음 예제와 같이 문서 적용시기를 나타내는 키를 사용하여 단일 파일에 여러 프로필 관련 YAML 문서를 지정할 수 있습니다 .
앞의 예에서 development
프로필이 활성이면 server.address
속성은 127.0.0.1
입니다. 마찬가지로 production
and 및 eu-central
profiles이 활성 인 경우 server.address
속성은 192.168.1.120
입니다. 는 IF development
, production
및 eu-central
프로필이되어 있지 활성화, 속성에 대한 다음 값입니다 192.168.1.100
.
|
응용 프로그램 컨텍스트가 시작될 때 명시 적으로 활성화 된 것이 없으면 기본 프로파일이 활성화됩니다. 따라서 다음 YAML에서는 "기본"프로필 에서만spring.security.user.password
사용할 수 있는 값을 설정 합니다.
다음 예제에서 암호는 프로파일에 연결되지 않았기 때문에 항상 설정되며 필요에 따라 다른 모든 프로파일에서 명시 적으로 재설정해야합니다.
spring.profiles
요소 를 사용하여 지정된 스프링 프로파일 은 !
문자 를 사용하여 선택적으로 무효화 될 수 있습니다 . 단일 문서에 대해 음수 및 음화가 아닌 프로파일이 모두 지정되면 음수가 아닌 하나 이상의 프로파일이 일치해야하며 음수 프로파일이 일치하지 않아야합니다.
24.7.4 YAML 결점
YAML 파일은 @PropertySource
주석 을 사용하여로드 할 수 없습니다 . 그런 식으로 값을로드해야하는 경우 속성 파일을 사용해야합니다.
프로필 관련 YAML 파일에서 다중 YAML 문서 구문을 사용하면 예기치 않은 동작이 발생할 수 있습니다. 예를 들어 프로파일이 활성화 된 application-dev.yml
상태에서 호출 된 파일에서 다음 구성을 고려하십시오 dev
.
위의 예에서 프로필 부정 및 프로필 식은 예상대로 작동하지 않습니다. 프로필 별 YAML 파일과 여러 YAML 문서를 결합하지 말고 하나만 사용하는 것이 좋습니다.
Last updated