외부 설정 사용 - @ConfigurationProperties
Type-safe Configuration Properties
스프링은 외부 설정의 묶음 정보를 개체로 변환하는 기능을 제공함, 타입 안전한 설정 속성
객체를 사용하면 타입을 사용할 수 있음, 잘못된 타입 입력 방지 등 활용할 수 있는 부분들이 많아짐
설정 정보 그 자체도 타입을 가지게 됨
- 외부 설정을 주입 받을 객체를 생성, 각 필드의 외부 설정의 키 값에 맞춰서 준비
- @ConfigurationProperties 어노테이션이 있으면 외부 설정을 주입 받는 객체라는 뜻
- 기본 주입 방식은 자바빈 프로퍼티 방식
- @EnableConfigurationProperties(MyDataSourcePropertiesV1.class)
- 스프링에게 사용할 @ConfigurationProperties 을 지정해주어야 함
- private final MyDataSourcePropertiesV1 properties 설정 속성을 생성자를 통해 주입 받아 사용
출력
ConfigurationProperties 를 사용하면 타입 안전한 설정 속성을 사용 할 수 있음
실행
- 숫자가 들어와야하는데 문자가 들어와 오류 발생
- ConfigurationProperties 으로 만든 외부 데이터는 타입에 대해서 믿고 사용할 수 있음
표기법 변환
maxConnection 은 표기법이 다름 스프링은 캐밥 표기법을 자바 낙타 표기법으로 자동으로 변환 시켜줌
@ConfigurationPropertiesScan
@ConfigurationProperties 를 하나하나 직접 등록 할 때는 @EnableConfigurationProperties 를 사용
@ConfigurationProperties 를 특정 범위로 자동 등록 할 때는 @ConfigurationPropertiesScan 을 사용
문제점
MyDataSourcePropertiesV1 은 스프링 빈으로 등록됨, 하지만 Setter 를 가지고 있기 때문에 값을 변경하는 문제가 발생됨, 이럴때 Setter 를 제거하고 대신에 생성자를 사용하면 중간에 데이터를 변경하는 실수를 근본적으로 방지할 수 있음
feat. 스프링부트 - 핵심 원리와 활용 (김영한)
'다시 웹, 백엔드로 > 스프링' 카테고리의 다른 글
@ConfigurationProperties 검증 (0) | 2023.10.30 |
---|---|
외부설정사용 - @ConfigurationProperties 생성자 (1) | 2023.10.22 |
외부 설정 사용 - @Value (0) | 2023.09.12 |
외부설정 사용 - 1 (0) | 2023.09.07 |
우선순위 (0) | 2023.09.05 |