- string
- AWS
- Docker
- jpa
- 프로그래머스
- join
- session
- SSL
- spring security 6
- 스프링부트
- nginx
- @transactional
- sql
- select
- 데이터베이스
- java
- 자바
- Git
- springboot
- mysql
- 문자열
- 스프링
- ORM
- DI
- 1차원 배열
- PYTHON
- Django
- spring mvc
- spring boot
- spring
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
개발하는 자몽
[TIL / Spring] 설정 파일과 프로필 본문
외부설정과 프로필1
오랜만에 Spring을 공부하고 있는데 설정 분리 등을 다 잊어버린 것 같아서 복기 겸 간단하게 정리한다.
DB 설정값을 코드 내부가 아닌 개발 서버와 운영 서버에 `application.properties`와 같은 파일을 두어 설정을 주입할 수 있다. 하지만 각 서버에 저장된 설정 파일을 관리하거나 변경 이력을 확인하기 어렵다.
이러한 문제점은 설정 파일을 프로젝트 내부에 포함해서 관리하여 해결할 수 있다. 설정 파일도 코드와 함께 빌드되게 하는 것이다.
- 프로젝트 내부에 코드와 함께 각 환경에 필요한 설정 데이터를 포함 및 관리
- 개발, 운영 설정 파일을 모두 포함하여 빌드
- `app.jar`는 개발, 운영 두 설정 파일을 모두 가지고 배포됨
- 실행 시 어떤 설정 데이터를 읽어야 하는지 구분
스프링은 `프로필`이라는 개념을 지원하여 4번 과정을 해결한다.
application-xxx.properties
프로젝트 src > main > resources 디렉토리에 `application-xxx.properties` 파일을 생성한다. `xxx`에는 서버 환경을 구분하는 `dev`나 `prod` 등의 단어들이 보통 들어간다.
해당 파일에 필요한 설정들을 입력한다. 아래 파일은 `application-dev.properties`이다.
url=dev.db.com
username=dev_user
password=dev_pw
프로필 설정
dev 외에도 prod 설정 파일이 있을 수 있으므로, 이를 구분하기 위해 프로필을 설정해야 한다.
아래 이미지에서 `Edit Configurations...`를 클릭한다.
클릭 후 `Program arguments(CLI arguments)`에 다음과 같이 입력한다.
--spring.profiles.active=dev
# 또는
-Dspring.profiles.active=dev
위 옵션에 `dev`를 입력하면 `application-dev.properties` 파일에 적힌 설정값이 활성화된다. 마찬가지로 `prod`를 입력하면 `application-prod.properties` 파일에 적힌 값이 활성화된다.
한 파일에서 설정값 작성하기(application.properties)
`application.properties`에 모두 작성하는 방법도 있다. 아래와 같이 작성하면 dev와 prod 프로필의 설정값을 한 파일에 담을 수 있다.
spring.config.activate.on-profile=dev
url=dev.db.com
username=dev_user
password=dev_pw
#---
spring.config.activate.on-profile=prod
url=prod.db.com
username=prod_user
password=prod_pw
이때 프로필을 구분하기 위해 각 프로필 설정값 맨 위에 `spring.config.activate.on-profile=xxx`을 작성해야 하며, 프로필 설정값이 바뀌는 구간에서는 `#---`를 작성하여 구분해야 한다.
위와 같이 작성하고 Configuration에 동일하게 프로필을 지정해 주면 해당 설정값이 활성화된다.
default profile
Configuration에 아무런 프로필도 지정해주지 않으면 default로 설정된다. default는 `application.properties`에서 아래와 같이 지정하면 된다.
url=local.db.com
username=local_user
password=local_pw
#---
spring.config.activate.on-profile=dev
url=dev.db.com
username=dev_user
password=dev_pw
#---
spring.config.activate.on-profile=prod
url=prod.db.com
username=prod_user
password=prod_pw
맨 위에 아무런 프로필도 지정되지 않은 것이 default이다. 따라서 프로필을 지정하지 않으면 맨 위에 설정이 기본값으로 설정된다.
'Java > Spring' 카테고리의 다른 글
[Spring Security] 토큰 기반 로그인/로그아웃 구현하기 (0) | 2024.06.08 |
---|---|
Spring Security 6 - Architecture (1) | 2024.06.07 |
[Spring Data JPA] TransactionRequiredException (0) | 2023.08.19 |
[QueryDSL] SpringBoot 3.1.0, QueryDSL 5.0.0 build.gradle (0) | 2023.08.12 |
[JPA] 지연로딩과 프록시 객체 조회 (0) | 2023.07.21 |