스프링에서 @value 를 알아보다가 application.properties에 있는 값을 변수에 주입하기 위해 사용한다는 것을 알게 되었다.
그럼 application.properties는 왜 필요할까?
궁금해서 찾아보다가 문뜩 든 생각이, 그럼 코드에 상수로 정의할 수 있는 것들을 왜 application.properties에 정의할까를 궁금해졌다.
>> 배포 환경에 따라 여러 properties 파일을 두는 방법이 있다. 그렇게 되면 코드 수정없이 여러 배포환경에 따라 값을 수정할 수 있다는 것을 알게 되었다.
application.properties 이란?
application.properties 파일은 런타임 시 다양한 환경에서 동작할 수 있도록 필요한 옵션들을 제공하는데 사용된다.
예를 들자면 메일 서버를 구축하거나 db 종류별 설정, 로그사용여부 등을 설정 가능하다.
직접 커스텀 옵션 값을 추가할 수도 있고, 스프링에서 사용하는 디폴트 옵션들을 바꿀 수 있다.
다음 링크에서 application.properperties에서 사용 가능한 디폴트 옵션들을 확인할 수 있다.
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' 카테고리의 다른 글
SpringFramework에서 property 파일 읽어오기 (0) | 2022.08.22 |
---|---|
[Spring] Caused by: java.lang.IllegalStateException: Ambiguous mapping 에러 (0) | 2022.08.13 |