본문 바로가기
Java & Kotlin/Spring

Spring Boot AutoConfiguration

by kiwi_wiki 2025. 1. 11.

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
반응형

'Java & Kotlin > Spring' 카테고리의 다른 글

Spring @Transaction  (0) 2025.01.14
Spring Filter & Interceptor  (0) 2025.01.13
Spring JPA  (0) 2025.01.12
Spring Framework?  (0) 2025.01.10