개발/[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 파일에 위치해야 한다.
  • 아래 그림 처럼 빈으로 주입이 가능하다.