[Spring Boot] Auto Configuration

2023. 8. 29. 18:08기술 창고/Spring

728x90
SMALL

일반적으로 Spring Boot를 사용하여 웹 어플리케이션을 빌드할 때에는 많은 설정이 필요합니다.
컴포넌트 스캔, Dispatcher Servlet 설정, 데이터베이스와 통신하기 위해 데이터 소스 설정, Bean에서 JSON, JSON에서 Bean으로 변환 등등.
이런 작업들을 간소화하기 위해서 Auto Configuration을 사용합니다.

(1) Auto Configuration은 클래스 경로에 있는 프레임워크에 따라 생성됩니다.
pom.xml이나 build.gradle에서 볼 수 있듯이 여러 Starter Project를 추가할 수 있고 많은 프레임워크들을 불러올 수 잇습니다.
(2) Spring Boot는 기본 자동 설정을 제공합니다.
하지만 자체 설정을 제공하여 이를 오버라이드할 수 있습니다.

이 두 가지의 특징이 Auto Configuration을 결정하는 데에 사용됩니다.
즉, 클래스 경로에 있는 프레임워크나 클래스, 제공된 기존 설정에 따라 결정되게 됩니다.

 

 

Auto Configuration 로직 정의

모든 Auto Configuration 로직은 특정 jar에서 정의됩니다.
maven 환경에서는 MavenDependencies, gradle 환경에서는 Externel Libraries 의 spring-boot-autoconfigure 에서 정의됩니다.

 

이 자동 설정에 대해서 좀 더 자세하게 개발자가 설정을 주도할 수 있는데, 이것은 application.properties에서 할 수 있습니다.

logging.level.org.springframework=debug

Auto Configuration에 대한 설정 내용들을 확인하기 위해 application.properties에 임의의 로깅 설정을 해주었습니다.
이 설정은 특정 패키지 org.springframework를 디버그 수준으로 로깅하려고 한다라는 뜻입니다.

 

이 설정을 적용할 경우 어플리케이션 실행 시 더욱 많은 로깅 정보들을 확인할 수 있습니다.
빨간색으로 표시한 것처럼 여러 로깅 수준이 존재하는데 기본 로깅 수준은 INFO입니다.
디버그 수준으로 변경하면 그에 맞는 더욱 자세한 로깅 정보들이 표시되게 되는 것입니다.
따라서 Auto Configuration에 따라 자동으로 설정된 정보들을 자세하게 확인할 경우 디버그 수준을 사용합니다.

또한 로그 정보들을 확인해볼 때 positive matches, negative matches를 확인할 수 있는데, 이것은 자동으로 설정된 항목과 자동으로 설정되지 않은 항목들을 표시한 로그 정보들입니다.

 

positive matches / negative matches

 

따라서 조회한 로그 정보들에서도 확인할 수 있듯이 모든 자동 설정 정보들은 spring-boot-autoconfigure jar 에서 정의되게 됩니다.
이처럼 Spring Boot는 자동으로 의존성이나 환경 등 다양한 요소들이 설정되기 때문에 개발적인 측면에서 효율적이라고 볼 수 있습니다.

728x90
반응형
LIST