실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료
TRANSCRIPT
![Page 1: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/1.jpg)
$실전! 스프링과 함께하는 환경변수 관리 변천사{ {
KSUG 이수홍
![Page 2: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/2.jpg)
$환경변수가 뭔가요??
![Page 3: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/3.jpg)
$
![Page 4: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/4.jpg)
$
![Page 5: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/5.jpg)
$
![Page 6: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/6.jpg)
$
![Page 7: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/7.jpg)
$WIKI를 찾아보니 “환경변수는 프로세스가 컴퓨터에서 동작하는 방식에 영향을 미치는, 동적인 값들의 모임이다.”
![Page 8: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/8.jpg)
$“스프링 프레임워크” 환경변수
![Page 9: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/9.jpg)
$
![Page 10: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/10.jpg)
$ 그냥 하면 되는것 아닌가?
![Page 11: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/11.jpg)
$ 하지만 ...
그냥 하면 되는것 아닌가?
![Page 12: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/12.jpg)
$
![Page 13: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/13.jpg)
$자주 변경되거나 확정되지 않은 데이터
![Page 14: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/14.jpg)
$자주 변경되거나 확정되지 않은 데이터
같은 용도 이지만 개발, 테스트, 운영 등
다양한 조건마다 다른 데이터
![Page 15: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/15.jpg)
$자주 변경되거나 확정되지 않은 데이터
같은 용도 이지만 개발, 테스트, 운영 등
다양한 조건마다 다른 데이터
다양한 곳에서 사용하는 공통 데이터 존재
![Page 16: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/16.jpg)
$그래서 환경변수가 중요한 이유?
![Page 17: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/17.jpg)
$그래서 환경변수가 중요한 이유?
바로 시스템의 유연성
![Page 18: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/18.jpg)
$기존 환경변수 방법
![Page 19: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/19.jpg)
$기존 환경변수 방법
JAVA
![Page 20: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/20.jpg)
$(1) 클래스 상수
• JAVA의 static final 키워드를 사용하여 클래스 변하지 않는 변수로 사용
• 상수를 가지는 특정 클래스 의존적
• 변수 변경 때 마다 참조하고 있는 클래스를 재 컴파일
• 현재도 많이 사용
![Page 21: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/21.jpg)
$(2) properties 파일
• Key=Value 형태의 데이터
• JAVA에서 기본 지원 ( java.util.Properties )
• 한글 미지원
![Page 22: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/22.jpg)
$Spring with Not Profile
![Page 23: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/23.jpg)
$Spring with Not Profile
![Page 24: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/24.jpg)
$기본적으로 Profile기능을 지원하지 않는 스프링 3.0 이하 버전들
![Page 25: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/25.jpg)
$기본적으로 Profile기능을 지원하지 않는 스프링 3.0 이하 버전들
![Page 26: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/26.jpg)
$Profile 기능란?
특정 Profile에 따라 환경변수 및 기능 등 을
다르게 할 수 있도록 구성하는 것
![Page 27: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/27.jpg)
$예를들면
![Page 28: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/28.jpg)
$예를들면
db.driver=org.h2.Driver db.url=jdbc:h2:mem:test;MODE=Oracle; db.user=sa db.password=
개발
![Page 29: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/29.jpg)
$예를들면
db.driver=org.h2.Driver db.url=jdbc:h2:mem:test;MODE=Oracle; db.user=sa db.password=
개발
db.driver=oracle.jdbc.driver.OracleDriver db.url=jdbc:oracle:thin:@//123.232.11.221:1521/test1 db.user=test1 db.password=test1
테스트 서버
![Page 30: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/30.jpg)
$예를들면
db.driver=org.h2.Driver db.url=jdbc:h2:mem:test;MODE=Oracle; db.user=sa db.password=
개발
db.driver=oracle.jdbc.driver.OracleDriver db.url=jdbc:oracle:thin:@//123.232.11.221:1521/test1 db.user=test1 db.password=test1
테스트 서버
db.driver=oracle.jdbc.driver.OracleDriver db.url=jdbc:oracle:thin:@//123.232.131.221:1521/staging db.user=staging1 db.password=staging1
스테이징 서버
![Page 31: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/31.jpg)
$예를들면
db.driver=org.h2.Driver db.url=jdbc:h2:mem:test;MODE=Oracle; db.user=sa db.password=
개발
db.driver=oracle.jdbc.driver.OracleDriver db.url=jdbc:oracle:thin:@//123.232.11.221:1521/test1 db.user=test1 db.password=test1
테스트 서버
db.driver=oracle.jdbc.driver.OracleDriver db.url=jdbc:oracle:thin:@//123.232.131.221:1521/staging db.user=staging1 db.password=staging1
스테이징 서버
db.driver=oracle.jdbc.driver.OracleDriver db.url=jdbc:oracle:thin:@(DESCRIPTION = (LOAD_BALANCE = OFF) … db.user=prod db.password=prod
상용 서버
![Page 32: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/32.jpg)
$Profile 기능을 적용할만한 방법이 없을까?
![Page 33: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/33.jpg)
$약간 무식한(?) 방법?
1. 모든 속성의 데이터를 구분
2. java 실행시 -D옵션으로 프로파일정보를 넘기고
• 예를 들면 java -Dprofile=prod
3. 내부에서 코딩(?)한다.
![Page 34: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/34.jpg)
$약간 무식한(?) 방법?
![Page 35: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/35.jpg)
$약간 무식한(?) 방법?
![Page 36: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/36.jpg)
$약간 무식한(?) 방법?
![Page 37: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/37.jpg)
$약간 무식한(?) 방법?
![Page 38: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/38.jpg)
$Maven과 Profile 기능 그리고 properties
![Page 39: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/39.jpg)
$Maven, Profile
![Page 40: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/40.jpg)
$Maven, Profile
• Maven은 빌드 및 배포 프로그램
![Page 41: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/41.jpg)
$Maven, Profile
• Maven은 빌드 및 배포 프로그램
• 빌드시 Profile을 선택할 수 있는 기능 제공
![Page 42: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/42.jpg)
$Maven, Profile
• Maven은 빌드 및 배포 프로그램
• 빌드시 Profile을 선택할 수 있는 기능 제공
• “$ mvn -P프로파일명 install” 형태로 빌드
![Page 43: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/43.jpg)
$Maven, Profile
• Maven은 빌드 및 배포 프로그램
• 빌드시 Profile을 선택할 수 있는 기능 제공
• “$ mvn -P프로파일명 install” 형태로 빌드
• 플러그인 사용하여 Profile 에따른 properties 선택
![Page 44: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/44.jpg)
$예제에 앞서
![Page 45: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/45.jpg)
$예제에 앞서
db.driver=org.h2.Driver db.url=jdbc:h2:mem:test;MODE=Oracle; db.user=sa db.password=
개발: build-local.properties
![Page 46: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/46.jpg)
$예제에 앞서
db.driver=org.h2.Driver db.url=jdbc:h2:mem:test;MODE=Oracle; db.user=sa db.password=
개발: build-local.properties
db.driver=oracle.jdbc.driver.OracleDriver db.url=jdbc:oracle:thin:@//123.232.11.221:1521/test1 db.user=test1 db.password=test1
테스트: build-test1.properties
![Page 47: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/47.jpg)
$예제에 앞서
db.driver=org.h2.Driver db.url=jdbc:h2:mem:test;MODE=Oracle; db.user=sa db.password=
개발: build-local.properties
db.driver=oracle.jdbc.driver.OracleDriver db.url=jdbc:oracle:thin:@//123.232.11.221:1521/test1 db.user=test1 db.password=test1
테스트: build-test1.properties
db.driver=oracle.jdbc.driver.OracleDriver db.url=jdbc:oracle:thin:@//123.232.131.221:1521/staging db.user=staging1 db.password=staging1
스테이징: build-staging.properties
![Page 48: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/48.jpg)
$예제에 앞서
db.driver=org.h2.Driver db.url=jdbc:h2:mem:test;MODE=Oracle; db.user=sa db.password=
개발: build-local.properties
db.driver=oracle.jdbc.driver.OracleDriver db.url=jdbc:oracle:thin:@//123.232.11.221:1521/test1 db.user=test1 db.password=test1
테스트: build-test1.properties
db.driver=oracle.jdbc.driver.OracleDriver db.url=jdbc:oracle:thin:@//123.232.131.221:1521/staging db.user=staging1 db.password=staging1
스테이징: build-staging.properties
db.driver=oracle.jdbc.driver.OracleDriver db.url=jdbc:oracle:thin:@(DESCRIPTION = (LOAD_BALANCE = OFF) … db.user=prod db.password=prod
상용서버: build-prod1.properties
![Page 49: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/49.jpg)
$Maven Profile 활용 1
![Page 50: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/50.jpg)
$Maven Profile 활용 1
<context:property-placeholder location=“classpath:META-INF/config.xml"/>
스프링 “mvc-config.xml”
![Page 51: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/51.jpg)
$Maven Profile 활용 1
<context:property-placeholder location=“classpath:META-INF/config.xml"/>
스프링 “mvc-config.xml”
<properties> <comment>환경변수 설정파일</comment> <entry key="profiles.active">${profiles.active}</entry> <entry key="db.driver">${db.driver}</entry> <entry key="db.url">${db.url}</entry> <entry key="db.user">${db.user}</entry> <entry key="db.password">${db.password}</entry></properties>
환경변수 “META-INF/config.xml”
![Page 52: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/52.jpg)
$Maven Profile 활용 2
![Page 53: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/53.jpg)
$Maven Profile 활용 2
$ mvn -Plocal install
![Page 54: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/54.jpg)
$Maven Profile 활용 2
$ mvn -Plocal install
build-local.properties
![Page 55: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/55.jpg)
$Maven Profile 활용 2
<properties> <comment>환경변수 설정파일</comment> <entry key="profiles.active">local</entry> <entry key="db.driver">org.h2.Driver</entry> <entry key="db.url">jdbc:h2:mem:test(생략)</entry> <entry key="db.user">sa</entry> <entry key="db.password"></entry></properties>
환경변수 “META-INF/config.xml”
$ mvn -Plocal install
build-local.properties
![Page 56: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/56.jpg)
$Maven Profile 활용 2
<properties> <comment>환경변수 설정파일</comment> <entry key="profiles.active">local</entry> <entry key="db.driver">org.h2.Driver</entry> <entry key="db.url">jdbc:h2:mem:test(생략)</entry> <entry key="db.user">sa</entry> <entry key="db.password"></entry></properties>
환경변수 “META-INF/config.xml”
$ mvn -Plocal install
build-local.properties
![Page 57: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/57.jpg)
$Maven Profile 활용 3
![Page 58: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/58.jpg)
$Maven Profile 활용 3$ mvn -Pstaging install
![Page 59: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/59.jpg)
$Maven Profile 활용 3$ mvn -Pstaging install
build-staging.properties
![Page 60: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/60.jpg)
$Maven Profile 활용 3$ mvn -Pstaging install
build-staging.properties
<properties> <comment>환경변수 설정파일</comment> <entry key="profiles.active">staging</entry> <entry key="db.driver">oracle.jdbc.driver.OracleDriver</entry> <entry key="db.url">jdbc:oracle:thin:@//123.232.1(생략)</entry> <entry key="db.user">prod</entry> <entry key="db.password">prod</entry></properties>
환경변수 “META-INF/config.xml”
![Page 61: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/61.jpg)
$Maven Profile 활용 3$ mvn -Pstaging install
build-staging.properties
<properties> <comment>환경변수 설정파일</comment> <entry key="profiles.active">staging</entry> <entry key="db.driver">oracle.jdbc.driver.OracleDriver</entry> <entry key="db.url">jdbc:oracle:thin:@//123.232.1(생략)</entry> <entry key="db.user">prod</entry> <entry key="db.password">prod</entry></properties>
환경변수 “META-INF/config.xml”
![Page 62: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/62.jpg)
$Maven Profile 장점
![Page 63: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/63.jpg)
$Maven Profile 장점
• 스프링 애플리케이션에서는 단순한 설정형태 유지
![Page 64: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/64.jpg)
$Maven Profile 장점
• 스프링 애플리케이션에서는 단순한 설정형태 유지
• 이클립스 및 인텔리J 등 IDE 플러그인에서 Profile 지원 ( Profile을 변경하면 자동으로 빌드 된다거나 ... )
![Page 65: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/65.jpg)
$Maven Profile 단점
• Profile 단위로만 properties 생성하기 때문에 중복 환경변수들이 생성
• properties 변경시마다 maven build 필요
• Maven이라는 도구에 종속되는 문제
![Page 67: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/67.jpg)
$그 이후 드디어 ...
![Page 68: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/68.jpg)
$프로파일 기능을 지원하는 스프링 3.1 출시
그 이후 드디어 ...
![Page 69: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/69.jpg)
$스프링 3.1 기능?
프레임워크에서 Profile 기능이 추가Profile에 따른 Bean 정보 제어 ( @Profile(“...”), <beans profile=“...”> )
• 환경변수 기능이 “Environment”클래스로 통합관리
( 관련내용 )
![Page 70: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/70.jpg)
$스프링 3.1 기능 적용
![Page 71: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/71.jpg)
$• web.xml 또는 애플리케이션 실행시 Profile 파라메터를 넘겨서 선택하는 형태
스프링 3.1 기능 적용
![Page 72: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/72.jpg)
$• web.xml 또는 애플리케이션 실행시 Profile 파라메터를 넘겨서 선택하는 형태
스프링 3.1 기능 적용
<context-param> <param-name>spring.profiles.default</param-name> <param-value>프로파일명</param-value></context-param>
또는 애플리케이션 실행시 $ java … -Dspring.profiles.active=프로파일명
![Page 73: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/73.jpg)
$• web.xml 또는 애플리케이션 실행시 Profile 파라메터를 넘겨서 선택하는 형태
스프링 3.1 기능 적용
<context-param> <param-name>spring.profiles.default</param-name> <param-value>프로파일명</param-value></context-param>
또는 애플리케이션 실행시 $ java … -Dspring.profiles.active=프로파일명
• 선택된 Profile을 Spring 프레임워크에서 환경변수 파일을 직접 선택
![Page 74: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/74.jpg)
$• web.xml 또는 애플리케이션 실행시 Profile 파라메터를 넘겨서 선택하는 형태
mvc-config.xml<context:property-placeholder location="classpath:META-INF/config-${spring.profiles.active:local}.properties"/>
스프링 3.1 기능 적용
<context-param> <param-name>spring.profiles.default</param-name> <param-value>프로파일명</param-value></context-param>
또는 애플리케이션 실행시 $ java … -Dspring.profiles.active=프로파일명
• 선택된 Profile을 Spring 프레임워크에서 환경변수 파일을 직접 선택
![Page 75: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/75.jpg)
$개선 후 장점
![Page 76: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/76.jpg)
$• Maven 종속 부분 제거
개선 후 장점
![Page 77: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/77.jpg)
$• Maven 종속 부분 제거
• 프로퍼티 변경 시 부담감 축소 ( No Build! )
개선 후 장점
![Page 78: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/78.jpg)
$• Maven 종속 부분 제거
• 프로퍼티 변경 시 부담감 축소 ( No Build! )
• 스프링 Bean 자체도 Profile 별로 구성 가능
개선 후 장점
![Page 79: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/79.jpg)
$• Maven 종속 부분 제거
• 프로퍼티 변경 시 부담감 축소 ( No Build! )
• 스프링 Bean 자체도 Profile 별로 구성 가능
개선 후 장점
<beans profile="prod"> <bean class="abc"/> <!-- ... --></beans><beans profile="local"> <bean class="cde"/> <!-- ... --></beans>
![Page 80: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/80.jpg)
$ 여전히 properties와 Profile 조합의 단점이 존재
![Page 82: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/82.jpg)
$
![Page 83: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/83.jpg)
$그 이후 Spring Boot 프로젝트 활성
![Page 84: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/84.jpg)
$아하! 최근 Spring Boot 에서 “YAML” 설정방법을 지원
하는구나!
![Page 85: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/85.jpg)
$YAML 핵심 장점
• 심플! ( json 비슷 )
• 한글지원!
• 들여쓰기 강제화! ( 파이썬 느낌 !? )
• 하나의 파일에서 문서를 나눌 수 있는 문법 (---) 지원
service: name: LeeSuHong phone: "010-‐5482-‐1212" sex: 'M'
-‐-‐-‐ spring.profiles: prod1,prod2,prod3
db: driver: oracle.jdbc.driver.OracleDriver url: jdbc:oracle:thin:@//123.45.67.78:1521/prod user: prod password: prod1234
-‐-‐-‐ spring.profiles: test1,test2
db: driver: oracle.jdbc.driver.OracleDriver url: jdbc:oracle:thin:@//123.45.67.78:1521/dev user: devtest password: test
![Page 86: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/86.jpg)
$Spring Boot와 YAML
• YAML 문서를 나누는 특징을 Profile기능에 활용
• 하나의 파일에서 여러가지 Profile을 기술
#공통부분 (모든프로파일의 속성) ---spring.profiles: prod1,prod2#상용 서버 관련 속성---spring.profiles: test1# 테스트1 서버 속성 ---spring.profiles: test2# 테스트2 서버 속성---spring.profiles: local#로컬 관련 속성
![Page 87: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/87.jpg)
$Spring Boot 환경변수 지원
• 환경변수와 Java bean과 자동 바인딩 기능을 제공
![Page 88: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/88.jpg)
$Spring Boot 환경변수 지원
• 환경변수와 Java bean과 자동 바인딩 기능을 제공
환경변수 데이터를 Java bean과 바인딩
![Page 89: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/89.jpg)
$Spring Boot 환경변수 지원
• 환경변수와 Java bean과 자동 바인딩 기능을 제공
환경변수 데이터를 Java bean과 바인딩
Spring Bean 형태로 객체를 주입시켜 사용
![Page 90: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/90.jpg)
$검토 후 현재 프로젝트에서 YAML로 형태로 변경 적용
결정!
![Page 91: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/91.jpg)
$YAML적용 후 장점
![Page 92: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/92.jpg)
$YAML적용 후 장점
• 파일 기준 Profile 위주의 구성 -> 문서 내용 위주로 변경
![Page 93: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/93.jpg)
$YAML적용 후 장점
• 파일 기준 Profile 위주의 구성 -> 문서 내용 위주로 변경
![Page 94: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/94.jpg)
$YAML적용 후 장점
• 파일 기준 Profile 위주의 구성 -> 문서 내용 위주로 변경
• 환경변수의 구조화
![Page 95: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/95.jpg)
$YAML적용 후 장점
• 파일 기준 Profile 위주의 구성 -> 문서 내용 위주로 변경
• 환경변수의 구조화
• 중복된 데이터 축소
![Page 97: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/97.jpg)
$지금까지 내용 정리
![Page 98: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/98.jpg)
$지금까지 내용 정리자바상수 클래스
![Page 99: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/99.jpg)
$지금까지 내용 정리자바상수 클래스
JAVA 소스에 종속적인 환경변수
![Page 100: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/100.jpg)
$지금까지 내용 정리자바상수 클래스
Properties 파일
![Page 101: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/101.jpg)
$지금까지 내용 정리자바상수 클래스
Properties 파일Key=Value의 심플한
환경변수
![Page 102: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/102.jpg)
$지금까지 내용 정리자바상수 클래스
Properties 파일
Maven Profile
![Page 103: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/103.jpg)
$지금까지 내용 정리자바상수 클래스
Properties 파일
Maven ProfileBuild 시 Profile결정 후 환경정보 추가
![Page 104: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/104.jpg)
$지금까지 내용 정리자바상수 클래스
Properties 파일
Maven Profile
Spring 3.1 Profile
![Page 105: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/105.jpg)
$지금까지 내용 정리자바상수 클래스
Properties 파일
Maven Profile
Spring 3.1 Profile프레임워크에서 Profile 환경변수 선택
![Page 106: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/106.jpg)
$지금까지 내용 정리자바상수 클래스
Properties 파일
Maven Profile
Spring 3.1 Profile
![Page 107: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/107.jpg)
$지금까지 내용 정리자바상수 클래스
Properties 파일
Maven Profile
Spring 3.1 Profile
YAML
![Page 108: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/108.jpg)
$지금까지 내용 정리자바상수 클래스
Properties 파일
Maven Profile
Spring 3.1 Profile
YAMLYAML형태의 환경변수
![Page 109: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/109.jpg)
$지금까지 내용 정리자바상수 클래스
Properties 파일
Maven Profile
Spring 3.1 Profile
YAML
![Page 110: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/110.jpg)
$지금까지 내용 정리자바상수 클래스
Properties 파일
Maven Profile
Spring 3.1 Profile
YAML
![Page 111: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/111.jpg)
$지금까지 내용 정리자바상수 클래스
Properties 파일
Maven Profile
Spring 3.1 Profile
YAML
시스템 규모의 대형화
![Page 112: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/112.jpg)
$운영할수록 늘어 가는 서버, 애플리케이션,
환경변수
![Page 113: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/113.jpg)
$환경변수 변경시 마다 재배포와 재시작
그리고
![Page 114: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/114.jpg)
$클라우드, MSA ( Micro Services Architecture)
![Page 115: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/115.jpg)
$늘어나는 애플리케이션의 환경변수를 제어 필요성
![Page 116: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/116.jpg)
$그런 요구에 의해서 나온 프로젝트
Spring Cloud Config
![Page 117: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/117.jpg)
$Spring Cloud Config ?
• 환경변수를 제공 해주는 REST API 서버 (필수)와 환경변수를 받는 클라이언트로 구성 (옵션)
• JSON 형식으로 제공 ( 어떤 서버에서도 사용가능 )
• 환경변수 관리 ( GIT, SVN 등 이용 )
• 환경변수에 대한 암복호화 기능 내장
• 다양한 Application, Profile, Version 형태를 지원
![Page 118: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/118.jpg)
$기존 환경변수 구조
시스템서버1
환경변수정보
시스템서버2
환경변수정보
시스템서버3
환경변수정보
소스버전관리 시스템
![Page 119: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/119.jpg)
$기존 환경변수 구조
시스템서버1
환경변수정보
시스템서버2
환경변수정보
시스템서버3
환경변수정보
소스버전관리 시스템
소스 배포로 인한 환경변수 갱신
![Page 120: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/120.jpg)
$기존 환경변수 구조
시스템서버1
환경변수정보
시스템서버2
환경변수정보
시스템서버3
환경변수정보
소스버전관리 시스템
![Page 121: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/121.jpg)
$Spring Cloud Config
시스템 구조
Spring 시스템
서버1
Spring Cloud Config Server
Spring 시스템
서버2
NodeJS 시스템
서버3
환경변수 저장소 ( GIT, SVN, Database 등 )
Spring Cloud Config Client
Spring Cloud Config Client
![Page 122: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/122.jpg)
$Spring Cloud Config
시스템 구조
Spring 시스템
서버1
Spring Cloud Config Server
Spring 시스템
서버2
NodeJS 시스템
서버3
환경변수 저장소 ( GIT, SVN, Database 등 )
환경변수 정보 버전 관리
Spring Cloud Config Client
Spring Cloud Config Client
![Page 123: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/123.jpg)
$Spring Cloud Config
시스템 구조
Spring 시스템
서버1
Spring Cloud Config Server
Spring 시스템
서버2
NodeJS 시스템
서버3
환경변수 저장소 ( GIT, SVN, Database 등 )
JSON API 형태로 환경변수를 시스템에 공급
환경변수 정보 버전 관리
Spring Cloud Config Client
Spring Cloud Config Client
![Page 124: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/124.jpg)
$API서버를 통하여 다수의 애플리케이션에 환경변수를
제공
![Page 125: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/125.jpg)
$API서버를 통하여 다수의 애플리케이션에 환경변수를
제공
![Page 126: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/126.jpg)
$Spring Boot의 모듈은 대부분 환경변수로 제어가능
Spring Cloud Config 와 결합으로 다수의 시스템의 세세한 컨트롤까지 가능
![Page 127: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/127.jpg)
$Spring Boot의 모듈은 대부분 환경변수로 제어가능
Spring Cloud Config 와 결합으로 다수의 시스템의 세세한 컨트롤까지 가능
![Page 128: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/128.jpg)
$관련 소스
https://github.com/sbcoba/spring-camp-2015-sample
![Page 129: 실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료](https://reader031.vdocuments.mx/reader031/viewer/2022012916/55a8678a1a28abff3f8b4867/html5/thumbnails/129.jpg)
$감사합니다.