You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
-
섹션 7. 외부설정과 프로필1
1️⃣ 프로젝트 설정
✅프로젝트 설정
2️⃣ 외부 설정이란?
위와 같은 방식은 현재 많이 사용하지 않는다 이유는
✅최근에는 어떤 방식을 사용할까?
main(args)메서드에서 사용data/hello.txthello.txt:url=dev.db.comhello.txt:url=prod.db.com3️⃣ 외부 설정 - OS 환경 변수
System.getenv()로 외부 설정을 확인할 수 있다.
결과
4️⃣ 외부 설정 - 자바 시스템 속성
자바 시스템 속성(Java System properties)은 실행한 JVM 안에서 접근 가능한 외부 설정이다.
추가로 자바가 내부에서 미리 설정해두고 사용하는 속성들도 있다.
자바 시스템 속성은 자바 프로그램을 실행할 때 사용
System.getProperties();를 사용하면 Map과 유사한(Map의 자식 타입) key=value 형식의 Properties를 받을 수 있다. → 모든 자바 시스템 속성을 조회할 수 있다.
실행 결과
-Durl=devdb -Dusername=dev_username -Dpassword=dev_pw추가실행 결과
5️⃣ 외부 설정 - 커맨드 라인 인수
6️⃣ 외부 설정 - 커맨드 라인 옵션 인수
✅일반적인 커맨드 라인 인수
✅ 커맨드 라인 옵션 인수(command line option arguments)
커맨드 라인 인수를 key=value 형식으로 구분하는 방법이 필요하다.
스프링에서는 커맨드 라인 인수를 key=value 형식으로 편리하게 사용할 수 있도록 스프링 만의 표준 방식을 정의했는데, 그것이 바로 커맨드 라인 옵션 인수이다.
스프링은 커맨드 라인에 -(dash) 2개(- -)를 연결해서 시작하면 key=value 형식으로 정하고 이것을 커맨드 라인 옵션 인수라 한다.
스프링이 제공하는 ApplicationArguments 인터페이스와 DefaultApplicationArguments 구현체를 사용하면 커맨드 라인 옵션 인수를 규격대로 파싱해서 편리하게 사용할 수 있다.
실행 결과
7️⃣ 외부 설정 - 커맨드 라인 옵션 인수와 스프링 부트
ApplicationArguments를 스프링 빈으로 등록해둔다.로 입력한 값을 어디서든 사용할 수 있다.
8️⃣ 외부 설정 - 스프링 통합
➡️PropertySource
org.springframework.core.env.PropertySource스프링은
PropertySource라는 추상 클래스를 제공하고, 각각의 외부 설정를 조회하는XxxPropertySource구현체를 만들어두었다.CommandLinePropertySourceSystemEnvironmentPropertySource스프링은 로딩 시점에 필요한
PropertySource들을 생성하고,Environment에서 사용할 수 있게 연결해둔다.
PropertySource의 구현체들
➡️ Environment
environment.getProperty(key)를 통해서 값을 조회할 수 있다.Environment는 내부에서 여러 과정을 거쳐서PropertySource들에 접근한다.Environment를 통해서 조회하면 된다.➡️ 설정 데이터(파일)
잘 아는
application.properties,application.yml도 따라서Environment를 통해서 접근할 수 있다.PropertySource에 추가된다.커맨드 라인 옵션 인수 실행
자바 시스템 속성 실행
실행 결과 → 커맨드 라인 옵션 인수 실행 , 자바 시스템 속성 샐행 값이 같음
✅ 우선순위
커맨드 라인 옵션 인수 실행
자바 시스템 속성 실행
위 두가지를 같이 동시에 넣으면 어디가 우선순위일까?
커맨드 라인 옵션 인수가 더 우선순위를 가진다.
우선순위는 상식 선에서 딱 2가지만 기억하면 된다.
속성이 더 우선권을 가진다.)
main의 arg를 통해서 들어오기 때문에 접근 범위가 더 좁다.)Beta Was this translation helpful? Give feedback.
All reactions