다시 웹, 백엔드로/스프링

외부설정 사용 - 1

EnoughTT 2023. 9. 7. 16:02

외부설정 사용 - 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