스프링 클라우드 config 서버는 bootstrap.yml 파일에서 애플리케이션의 구성 데이터를 보관할 저장소를 지정한다.
파일 시스템 기반의 저장소를 설정하는 것이 가장 쉽다.
우선 애플리케이션 구성 정보를 저장하고자 파일 시스템을 사용하므로 스프링 클라우드 config 서버가 native profile로 실행되도록 지정해야 한다.
(스프링 profile은 스프링 프레임워크가 제공하는 핵심 기능이다.)
위 사진에서는 구성 데이터를 찾기 위한 경로 search-locations를 특정 클래스 패스를 지정해 주었다. -> classpath:/config
(src/main/resources/config 폴더를 탐색한다.)
스프링 클라우드 config 서버를 설정했으니 이제 서비스 프로퍼티 파일을 작성하면 된다.
간단한 예를 위해 세 환경에 대한 구성 데이터만 설정했다.
example.property= I AM THE DEFAULT
spring.jpa.hibernate.ddl-auto=none
spring.jpa.database=POSTGRESQL
spring.datasource.platform=postgres
spring.jpa.show-sql = true
spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect
spring.database.driverClassName= org.postgresql.Driver
spring.datasource.testWhileIdle = true
spring.datasource.validationQuery = SELECT 1
management.endpoints.web.exposure.include=*
management.endpoints.enabled-by-default=true
example.property= I AM DEV
# DataSource settings: set here your own configurations for the database
spring.datasource.url = jdbc:mysql://localhost/spring5s?characterEncoding=utf8
spring.datasource.username = spring5
spring.datasource.password = spring5
example.property= I AM PROD
# DataSource settings: set here your own configurations for the database
spring.datasource.url = jdbc:mysql://localhost/spring5s?characterEncoding=utf8
spring.datasource.username = spring5
spring.datasource.password = spring5
이후 프로젝트를 실행해보자.
http://localhost:8071/licensing-service/default
를 입력하면
위와 같은 결과를 반환한다.
그 다음 http://localhost:8071/licensing-service/dev
를 입력해보자.
dev 엔드포인트를 호출했는데 위와 같이 default와 dev의 구성 프로퍼티를 모두 반환했다는 것을 알 수 있다.
왜냐하면 스프링 프레임워크가 문제를 해결하는데 계층적 메커니즘을 수행하기 때문이다.
스프링 프레임워크가 이 일을 수행할 때 default profile에서 정의된 프로퍼티를 먼저 찾은 후 특정 환경에 값이 있다면 그 값으로 default 값을 교체한다.
참고 자료:
스프링 마이크로서비스 코딩 공작소 - 존 카넬, 일러리 후알리루포 산체스