본문 바로가기

Spring

[Spring] spring의 application.properties 간단 개념

스프링에서 @value 를 알아보다가 application.properties에 있는 값을 변수에 주입하기 위해 사용한다는 것을 알게 되었다.
그럼 application.properties는 왜 필요할까?
궁금해서 찾아보다가 문뜩 든 생각이, 그럼 코드에 상수로 정의할 수 있는 것들을 왜 application.properties에 정의할까를 궁금해졌다. 
>> 배포 환경에 따라 여러 properties 파일을 두는 방법이 있다. 그렇게 되면 코드 수정없이 여러 배포환경에 따라 값을 수정할 수 있다는 것을 알게 되었다. 
 

application.properties 이란? 

application.properties 파일은 런타임 시 다양한 환경에서 동작할 수 있도록 필요한 옵션들을 제공하는데 사용된다. 
예를 들자면 메일 서버를 구축하거나 db 종류별 설정, 로그사용여부 등을 설정 가능하다.

 

직접 커스텀 옵션 값을 추가할 수도 있고, 스프링에서 사용하는 디폴트 옵션들을 바꿀 수 있다. 
다음 링크에서 application.properperties에서 사용 가능한 디폴트 옵션들을 확인할 수 있다. 

 

 

application.properties은 어떻게 사용될 수 있을까 

개발환경, 운영환경, 실제 서비스 등 다양한 환경에 따른 설정 옵션을 적용가능하다. 
개발건이 서비스로 제공되기 전 여러 환경을 거쳐 개발되고 테스트되고 배포된다. 
다양한 환경에 배포될 때마다 환경에 따른 설정 값을 프로퍼티 파일을 통해 코드 변경없이 바꿀 수 있다. 
 
스프링 부트는 application.properties 파일을 디폴트로 사용한다. 
추가로 운영환경, 서비스 환경 두 가지 환경에 배포를 한다고 가정해볼 수 있다. 
운영은 dev.properties, 서비스는 prod.properties 프로퍼티 파일을 생성하여 적용해보았다. 

 

1. dev 환경 수행
java -jar thymeleaf-basic-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev

 

수행결과 
 
2. prod 환경 수행
java -jar thymeleaf-basic-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod
수행결과 

 

 

application.properties vs constant in class 

 
application.properties 
환경마다 변경 가능한 값 설정
=> configurable per environemnt etc.
 
constant in class 
Use hardwired constants in your Java code when you don't want users / deployers / testers / tests changing them.
즉 환경에 따라 바뀌길 원치 않는 값들을 말한다. 
 
 
 
 
 
 
 
참고 링크 

https://m.blog.naver.com/songintae92/221330346447

 

Spring Profile 및 서버 배포 자동화

이번 포스트에서는 개발 환경(개발,운영) 에 따라 스프링 부트 환경설정 및 배포 자동화를 하는 방법에 대...

blog.naver.com