노트북을 열고.

[SubModule] 4. 프로퍼티 설정하기 본문

SpringBoot

[SubModule] 4. 프로퍼티 설정하기

ahndy84 2019. 7. 30. 22:53

1. application.yml 생성하기

이쯤에서 궁금한 점이 생겨야 합니다. 각 모듈은 독립적인 서버의 역할을 합니다. 그렇다면 기본적으로 동일한 도메인을 갖는 각각의 모듈들은 어떻게든 구분되어 관리되어야 할 것입니다. 한 예로 포트구성을 들 수 있겠죠. 그러면 각 Module에 필요한 다양한 환경설정은 과연 어디서 어떻게 하는지 알아보겠습니다. 

module-web/src/main/resource 경로에서 application.yml이라는 파일을 생성하겠습니다. 그리고 다음과 같이 작성하겠습니다.

server:
	port: 80
야믈 - YAML?
YAML : Ain't Markup Language? 기존의 마크업(Mark-up)방식이 아닌 데이터 중심으로 서술하는 방식을 뜻합니다. 기존의 것보다 형식이 간결하며 보기에도 수월하게 작성할수 있는 언어라 소개해 드릴 수 있겠습니다.

이제부터 module-web의 포트는 80번으로 설정이 되었습니다. 동일한 방법으로 다른 module도 동일한 경로에 application.yml 파일을 생성하여 각각의 고유한 포트번호를 설정할 수 있습니다. 이외에도 다양한 설정(Datasource, logging, etc)을 이 하나의 파일에서 관리할 수 있습니다.

 

2. profiles 설정하기

각 모듈은 실제 어플리케이션서버를 의미합니다. 서버는 클라이언트의 요청에 따라 맞게처리를 하고 응답을 해주는 역할을 합니다. 뿐만 아니라 많은 요청이 쇄도할 경우 안전하고 안정적인 서비스를 유지될 수 있도록 자원을 관리해주는 역할도 하죠. 이렇듯 서버는 실제 서비스 영역에서 매우 중요한 역할을 합니다. 우리는 이러한 서버를 더욱 체계적으로 로 운영되어 질 수 있도록 실제 서비스 이전의 단계를 정의하고 그 단계에 따라 고유한 설정을 부여할 수 있습니다. 가령 테스트용DB와 운영DB의 설정값을 분리할수 있고 Logging의 레벨도 각각 다르게 부여할 수 있겠죠. 우리는 이러한 그 단계별 역할 에따라 설정을 부여해보도록 하겠습니다.

 

# module-web/src/main/resources/application.yml

server:
	port: 80
---
spring:
	profiles:dev
server:
	port: 81
---
spring:
	profiles:stg
server:
	port: 82

한눈으로 봐도 쉽게 읽혀지실 것으로 믿습니다. 잘보여야 하실부분은 profiles입니다. 이제 각 모듈, 다시말해 각 애플리케이션 서버를 실행할 때에 위와 같이 ---를 기준으로 나누어진 profiles에 부여한 이름에 따라 그 이름에 맞는 설정값으로 애플리케이션이 동작합니다.  한번 실행하여 볼까요?

java -jar module-web -D spring.profiles.active=dev

인텔리제이에서는 실행 플러그인을 기본으로 제공합니다. 다음과 같이 상단 우측 셀렉트박스에 [Edit Configurations...] 를 선택후 실행할 Profiles를 지정하여 실행 하실 수도 있습니다.

Edit Configurations...
Run/Debug Configurations

이것으로 SubModule 프로젝트를 구성은 끝났습니다. 이렇게 구성된 밑바탕안에서 이제 우리가 구현하려는 서비스를 즐겁게 만들어보실 수 있을 것입니다. 앞으로 기반위에서 다양한 스프링부트에서 기본적으로 제공하는 간편하고도 강력한 프로젝트들을 함께 만들어 보도록 하겠습니다. 수고많으셨습니다.

 

 

'아는 것'보다 '알아야할 것'이 더 많은 늦깎이 주니어개발자입니다.

알고 있는 지식을 전한다는 목적 보단 막 알게된 지식을  스스로 정리하는 차원에서 포스팅하고 있으니 잘못된 내용이나 부족한 부분이 있더라도 겸허한 이해 부탁드립니다. 댓글이나 쪽지를 통해 첨삭의견주시면 감사히 수렴하고 보완하겠습니다.

Comments