들어가며
스프링 프레임워크로 개발을 하다 보면 프로퍼티(properties)파일에 저장된 특정한 설정 값들을 불러와 사용해야 하는 경우가 있다. 이때 @ConfigurationPropertiesScan을 이용하여 사용할 수 있다. 스프링부트 2.2 이전에는 @ConfigurationProperties를 이용해서 사용하였다.
@ConfigurationProperties 한계점
@ConfigurationProperties을 사용하면 SpringBoot 메인 클래스에 @EnableConfigurationProperties를 추가하여 프로퍼티 클래스들이 늘어날때마다 해당 클래스들을 추가해줘야하는데 이때 해당 클래스들이 많아질 경우에 코드가 상당히 무거워지는 한계가 있다. 이러한 문제점을 해결하기 위해 @ConfigurationPropertiesScan이라는 어노테이션을 스프링부트 2.2 부터 제공해줌.
@Configuration
@EnableConfigurationProperties({DataSourceProperties.class, InfluxProperties.class, ...}) // 이렇게 계속 길어진다면..
public class SpringBootApplication {
}
@ConfigurationPropertiesScan 사용방법
@ConfigurationPropertiesScan은 마치 @ComponentScan 방식과 상당히 유사하다. @ConfigurationPropertiesScan 어노테이션은 패키지를 기반으로 @ConfigurationProperties가 등록된 클래스들을 찾아서 값들을 주입하고 빈으로 등록해준다. @ConfigurationPropertiesScan도 @ComponentScan과 마찬가지로 스캔을 실행할 패키지 또는 클래스를 지정해줄 수 있으며, 별도 값을 지정해주지 않으면 해당 어노테이션이 붙은 패키지와 그 하위의 패키지에 대한 스캔을 진행한다.
다음과 같이 스프링부트 메인 클래스에 @ConfigurationPropertiesScan 어노테이션을 붙여준다.
@Configuration
@ConfigurationPropertiesScan
public class SpringBootApplication { }
이후 스캔할 클래스에 @ConfigurationProperties 어노테이션을 붙여준다. 이때 @ConstructorBinding 어노테이션을 사용하면 생성자 파라미터 바인딩을 한다. (이 내용은 @ConfigurationProperties 어노테이션에 들어가보면 확인할 수 있다.)
'Spring' 카테고리의 다른 글
@PathVariable & @RequestParam 어노테이션 (0) | 2022.02.22 |
---|---|
Spring - @NotNull, @NotEmpty, @NotBlack (0) | 2022.02.13 |
Spring - Transaction 정의와 Spring에서의 Transaction (0) | 2021.12.08 |
Spring Security를 이용한 회원 로그인 구현과 동작 원리 정리 (+SecurityFilterChain 기능 정리 ) (0) | 2021.11.19 |
JPA Auditing 을 이용한 생성 시간과 수정 시간 자동화하기 (0) | 2021.10.08 |
댓글