티스토리 뷰

반응형

앞선 포스팅에서 프로퍼티(Properties)에 저장된 특정한 설정 값들을 불러오는 방법에 대해 살펴보았습니다. 그런데 @EnableConfigurationProperties에 등록해야 하는 클래스들이 많은 경우에는 일일이 등록하는게 번거로울 수 있다. 이번에는 스캔 방식으로 프로퍼티 클래스들을 등록하는 방법에 대해서 알아보고자 한다.

 

 

1. @ConfigurationPropertiesScan을 이용한 설정 프로퍼티 클래스(@Configuration Properties)의 빈 등록


[ @EnableConfigurationProperties의 한계점 ]

@EnableConfigurationProperties를 이용해 설정 프로퍼티 클래스(@Configuration Properties)를 사용하는 경우에는 해당 클래스들이 많아질 경우에 코드가 상당히 무거워지는 한계가 있다.

@Configuration
@EnableConfigurationProperties({DataSourceProperties.class, InfluxProperties.class, ...})
public class SpringBootApplication {

}

 

SpringBoot 2.2부터는 이러한 문제점들을 해결하기 위해 @ConfigurationPropertiesScan 이라는 어노테이션을 제공하고 있다.

 

 

[ @ConfigurationPropertiesScan의 사용법 ]

@ConfigurationPropertiesScan 어노테이션은 @ComponentScan과 상당히 유사하다.

@ConfigurationPropertiesScan 어노테이션은 패키지를 기반으로 @ConfigurationProperties가 등록된 클래스들을 찾아 값들을 주입하고 빈으로 등록해준다. @ConfigurationPropertiesScan에 스캔을 실행할 패키지 또는 클래스를 지정해줄 수 있으며, 만약 별도로 지정하지 않는다면 해당 어노테이션이 붙은 패키지와 그 하위의 패키지에 대해 스캔을 진행한다. @Component나 그 하위 어노테이션(@Configuration 등)이 붙은 클래스들은 @ConfigurationPropertiesScan에 의해 스캔되지 않는다.

일반적으로 SpringBoot의 메인 클래스에 @ConfigurationPropertiesScan 어노테이션을 다음과 같이 추가해주고, 필요한 경우 Base Package(베이스 패키지)를 지정해준다.

@Configuration
@ConfigurationPropertiesScan("com.mang.atdd.membership")
public class SpringBootApplication {

}

 

위와 같이 설정을 해주면 com.mang.atdd.membership과 그 하위 패키지들에 대해 @ConfigurationProperties 어노테이션이 붙은 클래스들에 값을 주입하고 빈으로 등록해준다.

만약 등록해주어야 하는 클래스가 많다면 @EnableConfigurationProperties가 아닌 @ConfigurationPropertiesScan를 이용하는 것도 좋다.

 

 

 

 

 

관련 포스팅

  1. final 변수를 갖는 클래스에 프로퍼티(Properties) 설정 값 불러오기, 생성자 바인딩(Constructor Binding) - (1/2)
  2. @ConfigurationPropertiesScan을 이용한 설정 프로퍼티 클래스(@Configuration Properties)의 빈 등록 - (2/2)

 

 

 

 

참고 자료

반응형
댓글
댓글쓰기 폼
반응형
공지사항
Total
1,765,578
Today
459
Yesterday
4,771
TAG more
«   2021/12   »
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
글 보관함