일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 메세지수정
- foreignkey
- 메소드명
- 테스트
- appspec.yml
- ㅔㄴ션
- EC2
- 테스트메소드
- 참조키
- application.yml
- Query
- AuthenticationEntryPoint
- 적용우선순위
- ubuntu
- 검색
- 네이티브쿼리
- 커밋메세지수정
- 포트
- 2 > /dev/null
- 서브쿼리
- MySQL
- querydsl
- appspec
- subquery
- 예약
- 외부키
- docker명령어
- 추후정리
- 컨테이너실행
- WeNews
- Today
- Total
제뉴어리의 모든것
application.yml 을 공통 내용과 환경별 파일로 나누기 본문
전체 항목
- 다양한 방법의 application 파일 나누기
- 결론
다양한 방법의 application 파일 나누기
1. 하나의 yml 파일에 다 넣어서 관리하기
#application.yml 의 내용입니다
spring:
config:
activate:
on-profile: dev # 해당 내용의 설정은 dev 라고 properties를 활성화 시킬때 적용시킴을 나타냄
server:
port: 9189
my:
nickname: 9189멤버
--- # 한파일내에서 각각의 설정 파일임을 나누는 기준선
spring:
config:
activate:
on-profile: prod # 해당 내용의 설정은 prod 라고 properties를 활성화 시킬때 적용시킴을 나타냄
server:
port: 8901
my:
nickname: 8901멤버
위와 같이 하나의 yml 파일에 모든 내용을 넣는것이다.
--- 를 기준으로 마치 위아래의 내용을 각각 하나의 yml 파일로써 인식해준다.
참고로 --- 로 나누는 기준은 스프링에서 공식으로 지원하기 때문에 인식하는것이다.
그래서 위와같이 하나에 다 정의를 해놓고, IDE에서 실행시킬때나 빌드된 jar파일을 -jar 명령어를 사용하여 실행시킬때 적용 시킬 수 있다.
- IDE에서 적용하는 법 (Intellij 2022.2.3 Ultimate 기준)
1. IDE우측 상단에 존재하는, 아래와 같은 메뉴에서 Edit를 클릭한다
2. Active profiles 항목에서 원하는 properties 파일 이름을 입력
위에서 보았던 application.yml 파일 내에 정의된 dev라는 키워드를 입력하였다.
- application.yml 의 내용-
spring:
config:
activate:
on-profile: dev
3. 실행 결과 확인하기
아래 화면에서 보이듯이,
dev에서 설정했던 Port 번호로 서버가 잘 열렸다.
결과 화면은 없지만
물론 프로퍼티 값으로 설정했던
my:
nickname:
값도 아래와 같이 잘 가져올것이다.
참고로 @Value 는 import org.springframework.beans.factory.annotation.Value; 를 사용할것.
@Value("${my.nickname}")
private String nickname;
2. 공통 내용의 application.yml 하나와 환경별 application.yml 여러개
아래와 같이 resources 내에 공통내용 (application.yml) 설정파일 하나와
어플리케이션이 구동되는 환경에 따른 설정값이 저장된 분기 (application-{환경}.yml) 설정 파일들이다.
- application.yml 내용
# application.yml, 공통 내용
server:
port: 9090
- application-dev.yml
#application-dev.yml, 개발환경시 적용 내용
my:
nickname: DEV USER!!!
- application-prod.yml
#application-prod.yml, 출시버전 적용 내용
my:
nickname: PROD USER!!!
- IDE에서 적용하는 법 (Intellij 2022.2.3 Ultimate 기준)
위에서 했던 방법과 동일하다.
사진처럼 해당 메뉴를 클릭하고, 적용하고 싶은 환경을 입력하여 주면 된다. ( ex: dev, prod...)
1. 결과 화면
dev 로 적용되었고, 필자가 테스트를 위해 찍어둔
my:
nickname:
에 대한 값이 찍힌것을 볼 수 있다.
- BUILD 시 적용하는 법
현재 파일의 구조는 "2. 공통 내용의 application.yml 하나와 환경별 application.yml 여러개" 의 상황과 동일하다.
Gradle을 이용하여 Build를 하고 생성된 ~.jar 파일에 특정 application.yml을 적용하고 싶은 경우에 사용 하는 방법이다
2가지 경우가 있다.
build (1) 를 이용하는 방법
1.
우선 build를 진행하려면
설정파일의 기본이 되는 application.yml에 아래처럼 내용을 넣는다
server:
port: 9090
spring: # 추가 된 내용
profiles:
include:
- dev
2.
Gradle 탭에서 build를 눌러서 build를 진행한다. ( => jar 파일 생성 )
해당 jar 파일을 java -jar 를 이용하여 실행할때 아래처럼 vm 옵션을 추가하여 실행한다.
java -jar -Dspring.profiles.active=prod application-test-0.0.1-SNAPSHOT.jar
3. 결과 화면
사진을 보면 dev, prod 두개가 적용됬다고 나온다.
하지만 application-dev.yml 과 application-prod.yml의 내용이 동일하기 때문에,
직접 vm 옵션을 준 prod의 내용으로 모두 적용된다.
그러한 증거로, 마지막 줄 "PROD USER!!! =============" 라는 출력 메세지가 보일것이다. 필자가 확인을 위해 넣은
my:
nickname
에 대한 콘솔 로그이다.
bootJar (2) 를 이용하는 방법
build 와 다르게
application.yml 에 아래의 내용을 추가 할 필요없다.
spring: # 추가 된 내용
profiles:
include:
- dev
그냥 bootJar로 jar 파일을 만들고,
위와 동일하게
java -jar -Dspring.profiles.active=prod application-test-0.0.1-SNAPSHOT.jar
명령어를 넣어주면 된다.
결론
의외로 알아보면서 시간이 오래 걸렸다....
그래서 그런지 뭔가 더 집착을 하게 되서 여러가지를 알아보고 테스트 했지만,
"2. 공통 내용의 application.yml 하나와 환경별 application.yml 여러개"
항목의
build (1) 를 이용하는 방법
방식으로 하면 될거 같다....
평상시에는
application.yml에 아래와 같이 넣어서 쓰고,,,
server:
port: 9090
spring: # 추가 된 내용
profiles:
include:
- dev
build 진행해서 jar파일로 배포를 해서
해당 jar 파일을 실행 시킬때,
아래의 명령어를 이용하여 service를 등록하든 하면 될것 같다...
java -jar -Dspring.profiles.active=prod application-test-0.0.1-SNAPSHOT.jar
참조
https://adg0609.tistory.com/m/61
https://joomn11.tistory.com/110
https://backtony.github.io/spring/2021-08-21-spring-start-8/
'Spring Boot' 카테고리의 다른 글
Spring Boot 프로젝트 Build시에 Test Skip 하는 방 (0) | 2023.04.06 |
---|---|
application-dev.yml 에 여러 yml 파일 추가시키기 (0) | 2022.11.15 |
AOP 복습 및 실제 구현 내용 (0) | 2022.10.31 |
ant pattern, * vs ** (0) | 2022.10.19 |
SMTP 를 이용하여 메일 보내기 (0) | 2022.10.18 |