개발/[MSA] 마스터링 스프링 클라우드-내용 정리
제2장 마이크로서비스를 위한 스프링 (3) - 컨피규레이션 파일 사용자 정의하기
sheriff
2019. 1. 25. 10:13
컨피규레이션 파일 사용자 정의하기
스프링 부트의 최대 장점은 기본 설정을 해준다는 것이다. 그래서 빠르게 시작할 수 있다.
그런 장점 때문에 기본 설정을 재정의하고 무시하는 법을 배워야 하는 단점. (단점? 당연히 알아야지ㅎ)
스프링 부트는 application으로 시작하는 설정 파일을 자동으로 찾도록 설계되어 있다.
지원하는 파일 타입은
- .properties
- .yml
이렇게 두 가지 이다.
따라서 application.properties 또는 application.yml 의 이름을 한 설정 파일을 찾는다.
둘 중에서 아무거나 써도 되지만 .yml 파일이 가독성이 좋아서(개인적으로) 나는 yml 파일을 사용한다.
또한 application-prod.properties 또는 application-dev.yml 처럼 특정 프로파일을 지정하는 설정 파일도 가능하다.
운영체제 환경변수와 커맨드라인 입력값을 사용하여 설정을 외부에서 주입 할 수 있다.
이런 경우에는 .properties 와 .yml 파일은 다음의 위치에 있어야 한다.
- 애플리케이션의 현재 디렉토리의 /config 하위 디렉토리
- 애플리케이션의 현재 디렉토리
- classpath /config 패키지(예를 들어 JAR의 내부)
- classpath root
설정 파일명으로 application이나 application-{profile} 이외의 특정한 이름을 부여하기 위해서는 시작 시 spring.config.name 환경변수를 제공해야 한다.
string.config.location 설정에 콤마로 분리된 설정 디렉토리 경로와 컨피규레이션 파일 경로 목록을 설정할 수 있다.
Configuration 파일 내부에 두 종류의 설정을 지정할 수 있다.
- 하위 클래스(주로 spring-boot-autoconfiguration 라이브러리)에서 사용되는 공통 설정, 미리 정의된 스프링 부트 설정의 그룹
- 자신만의 컨피규레이션 속성을 지정하면 @Value 또는 @ConfigurationProperties 애노테이션을 통해 애플리케이션에 주입된다.
미리 정의된 속성
스프링 부트에서 지원하는 미리 정의된 속성은 아래 주소로 가면 된다.
일반적으로 application.yml 파일은 src/main/resources 디렉토리에 위치한다.
server:
port: 8888
error:
whitelabel:
enabled: false
spring:
application:
name: kennen-service
logging:
pattern:
console: "%d{HH::mm:ss.SSS} %-5level %logger{36} - %msg%n"
file: "%d{HH::mm:ss.SSS} %-5level %logger{36} - %msg%n"
level:
org.springframework.web: debug
file: app.log
기본 속성 값은 이렇게 재정의가 가능하다.
- 로깅을 위해 log4j.xml이나 logback.xml 등을 설정하지 않아도 설정대로 로깅 기능을 지원한다.
- 기본 애플리케이션 이름을 kennen-service로 수정했다.
- HTTP 포트를 8888로 수정했다.
사용자 정의 속성
- 사용자 정의 Configuration 역시 같은 properties 파일 또는 YAML 파일에 위치해야 한다.
- 아래 그림 처럼 빈으로 주입이 가능하다.