[Spring] spring의 application.properties 개념 및 용도

[Spring] spring의 application.properties 개념 및 용도

그럼 application.properties는 왜 필요할까? 궁금해서 찾아보고,, 그럼 코드에 상수로 정의할 수 있는 것들을 왜 application.properties에 정의할까를 궁금해졌다. 배포 자동화에서 환경에 따라 바뀌게 될 때 사용될 수 있구나를 알게되었다. 아직 공부해야할 것들이 많다ㅠㅠ 스프링에서 @value 를 알아보다가 application.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. 즉 환경에 따라 바뀌길 원치 않는 값들을 말한다. ETC 외에도 application.properties 를 설정할 수 있는 다양한 방법들이 존재한다. Command Line Properties

Properties File

YAML File

Externalized Properties : 외부 파일을 읽어 참고 링크 https://www.tutorialspoint.com/spring_boot/spring_boot_application_properties.htm https://stackoverflow.com/questions/10801746/properties-file-vs-constants-class-in-java

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

from http://keepgoing0328.tistory.com/105 by ccl(A) rewrite - 2021-12-18 13:27:44