1. 개요
Spring 애플리케이션을 구성하는 방법 중 하나는 YAML 구성 파일을 사용하는 것입니다.
이 빠른 기사에서는 YAML을 사용하여 간단한 Spring Boot 애플리케이션에 대해 서로 다른 Profile을 구성합니다.
2. Spring YAML 파일
Spring 프로파일은 Spring 애플리케이션이 다른 환경에 대해 다른 속성을 정의 할 수 있도록 도와줍니다.
다음은 두 개의 Profile이 포함 된 간단한 YAML 파일입니다. 두 프로필을 구분하는 세 개의 대시는 새 문서의 시작을 나타내므로 모든 Profile을 동일한 YAML 파일에 설명 할 수 있습니다.
application.yml 파일 의 상대 경로 는 /myApplication/src/main/resources/application.yml입니다.
spring:
config:
activate:
on-profile: test
name: test-YAML
environment: testing
enabled: false
servers:
- www.abc.test.com
- www.xyz.test.com
---
spring:
config:
activate:
on-profile: prod
name: prod-YAML
environment: production
enabled: true
servers:
- www.abc.com
- www.xyz.com
이 설정은 응용 프로그램을 시작할 때 이러한 프로필이 활성화된다는 것을 의미하지 않으며, 프로필 별 문서에 정의 된 속성은 명시 적으로 지정하지 않는 한로드되지 않습니다. 기본적으로 유일한 활성 프로필은 ' default '입니다.
3. 구성 클래스에 YAML 바인딩
속성 파일에서 관련 속성 집합을로드하기 위해 빈 클래스를 만듭니다.
@Configuration
@EnableConfigurationProperties
@ConfigurationProperties
public class YAMLConfig {
private String name;
private String environment;
private boolean enabled;
private List<String> servers = new ArrayList<>();
// standard getters and setters
}
여기에 사용 된 어노테이션은 다음과 같습니다.
- @Configuration 은 클래스를 빈 정의의 소스로 표시합니다.
- @ConfigurationProperties 는 외부 구성을 구성 클래스에 바인딩하고 유효성을 검사합니다.
- @EnableConfigurationProperties 이 어노테이션은Spring 애플리케이션에서 @ConfigurationProperties 어노테이션이 달린 Bean을 활성화하는 데 사용됩니다.
4. YAML 속성 액세스
YAML 속성에 액세스하기 위해 YAMLConfig 클래스 의 개체를 만들고 해당 개체를 사용하여 속성에 액세스합니다.
속성 파일에서 spring.profiles.active 환경 변수를 prod로 설정해 보겠습니다 . 우리가이 속성을 정의하지 않으면 , 단지 '기본' 프로파일이 활성화됩니다.
특성 파일의 상대 경로는 /myApplication/src/main/resources/application.properties입니다.
spring.profiles.active=prod
이 예에서는 CommandLineRunner를 사용하여 속성을 표시합니다 .
@SpringBootApplication
public class MyApplication implements CommandLineRunner {
@Autowired
private YAMLConfig myConfig;
public static void main(String[] args) {
SpringApplication app = new SpringApplication(MyApplication.class);
app.run();
}
public void run(String... args) throws Exception {
System.out.println("using environment: " + myConfig.getEnvironment());
System.out.println("name: " + myConfig.getName());
System.out.println("enabled:" + myConfig.isEnabled());
System.out.println("servers: " + myConfig.getServers());
}
}
명령 줄의 출력 :
using environment: production
name: prod-YAML
enabled: true
servers: [www.abc.com, www.xyz.com]
5. YAML 속성 재정의
Spring Boot에서 YAML 파일은 다른 YAML 속성 파일에 의해 재정의 될 수 있습니다.
버전 2.4.0 이전에는 YAML 속성이 다음 위치의 속성 파일에 의해 우선 순위가 가장 높은 순서로 재정의되었습니다.
- 패키지 된 jar 외부에 배치 된 프로필의 속성
- 패키징 된 jar 안에 패키징 된 프로필의 속성
- 패키지 된 jar 외부에 배치 된 애플리케이션 속성
- 패키지 된 jar 안에 패키지 된 애플리케이션 속성
Spring Boot 2.4부터 외부 파일은 프로필 특정 여부에 관계없이 항상 패키지 파일을 재정의합니다.
6. 결론
이 빠른 기사에서는 YAML을 사용하여 Spring Boot 애플리케이션에서 속성을 구성하는 방법을 살펴 보았습니다. 우리는 또한 YAML 파일에 대한 Spring Boot가 따르는 속성 재정의 규칙을 보았습니다.
- https://docs.spring.io/spring-framework/docs/current/reference/html
- https://www.baeldung.com/spring-yaml
'Java' 카테고리의 다른 글
스트림을 사용하여Map 작업 (0) | 2021.03.10 |
---|---|
자바 HashMap 가이드 (0) | 2021.03.10 |
Spring을 사용한 Apache Kafka 사용방법 (0) | 2021.03.09 |
Maven에서 Java 버전 설정 (0) | 2021.03.09 |
Spring Cloud OpenFeign 소개 (0) | 2021.03.09 |