Java & Kotlin/Spring
Spring Boot AutoConfiguration
kiwi_wiki
2025. 1. 11. 08:00
728x90
반응형
Spring Framework와 차이점
스프링(Spring)은 프레임워크이며, 스프링 부트(Spring Boot)는 스프링 프레임워크를 기반으로 한 도구이다
스프링은 설정 파일을 작성해야 하지만, 스프링 부트는 자동 설정을 제공하여 간편하게 개발할 수 있다
또한, 스프링 부트는 내장 서버를 제공하여 쉽게 웹 애플리케이션을 실행할 수 있다
Spring은 스프링 프레임워크를 보다 세밀하게 제어하고자 하는 경우에, Spring Boot는 빠르고 간단하게 스프링 애플리케이션을 개발하고자 하는 경우에 사용된다
자동 구성의 내부 동작 방법
- 자동 구성(auto configuration)은 @SpringBootApplication 어노테이션에서 부터 시작
- @ComponentScan 어노테이션을 통해 개발자가 정의한 Component들이 Bean으로 먼저 등록되고 @EnableAutoConfiguration 어노테이션으로 인해 AutoConfiguration이 동작하여 애플리케이션 구성에 필요한 추가 Bean들을 읽어서 등록하게 된다
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(excludeFilters= {@Filter(type= FilterType.CUSTOM, classes= TypeExcludeFilter.class),
@Filter(type= FilterType.CUSTOM, classes= AutoConfigurationExcludeFilter.class)})
public @interface SpringBootApplication {
- @EnableAutoConfiguration 어노테이션 내부에서 AutoConfigurationImportSelector 클래스를 import
- AutoConfigurationImportSelector 클래스에서는 자동 구성할 후보 빈들을 불러와 제외되거나 중복된 빈들을 제거하는 작업을 거친 후 자동 구성할 빈들을 반환
- META-INF/spring/org.springframework.autoconfigure.AutoConfiguration.imports 파일에 있는 146개의 AutoConfiguration 클래스들의 경로가 포함된 풀 네임을 가져와 설정 정보로 선택
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@AutoConfigurationPackage
@Import(AutoConfigurationImportSelector.class)
public @iinterface EnableAutoConfiguration {
728x90
반응형