외부설정 사용 - 1
스프링이 지원하는 다양한 외부 설정 조회 방법
- Environment
- @Value - 값 주입
- @ConfigurationProperties - 타입 안전한 설정 속성
MyDataSource
- url , username , password : 접속 url, 이름, 비밀번호
- maxConnection : 최대 연결 수
- timeout : 응답 지연 시 타임 아웃
- options : 연결시 사용하는 기타 옵션들
- @PostConstruct 에서 확인을 위해 설정된 값을 출력
외부 속성 설정 데이터를 사용 (application.properties)
properties 케밥 표기법
properties는 소문자와 - (dash) 를 사용하는 캐밥표기법을 주로 사용
MyDataSource 에 값 설정 및 스프링 빈 등록
- MyDataSource 를 스프링 빈으로 등록하는 자바 설정
- Environment 를 사용하면 코드 안에서 일관성 있게 외부 설정을 조회 할 수 있음
- Environment.getProperty(key, Type) : 해당 타입으로 변환해줌 (스프링 내부 변환기가 작동함)
ExternalReadApplication 수정
- 설정한 정보를 빈으로 등록하기 위해 @Import(MyDataSourceEnvConfig.class) 추가
- @SpringBootApplication(scanBasePackages = "hello.datasource")
- scanBasePackages 을 설정하지 않으면 현재 위치인 hello 패키지부터 하위가 모두 컴포넌트 스캔 대상이 됨
- @Configuration 을 포함하고있는 MyDataSourceEnvConfig 이 항상 컴포넌트 스캔 대상
실행
- 외부설정방식이 달라져도, 예를들어서 설정데이터 (application.properties) 를 사용하다가 커맨드 라인 옵션 인수나 자바시스템 속성으로 변경해도 애플리케이션 코드를 그대로 유지할 수 있음
- 하지만 Environment 를 직접 주입 받고, env.getProperty(key) 를 통해서 값을 꺼내는 과정을 반복해야 함
feat. 스프링부트 - 핵심 원리와 활용 (김영한)
'다시 웹, 백엔드로 > 스프링' 카테고리의 다른 글
외부 설정 사용 - @ConfigurationProperties (0) | 2023.09.12 |
---|---|
외부 설정 사용 - @Value (0) | 2023.09.12 |
우선순위 (0) | 2023.09.05 |
설정 데이터 (0) | 2023.09.04 |
외부 설정 - 2 (0) | 2023.09.01 |