본문 바로가기

Framework/Spring

[Spring] @SpringBootApplication의 내부적으로 수행하는 작업 - 컴도리돌이

728x90
728x90

@SpringBootApplication

@SpringBootApplicationSpring Boot FrameWork에서 주요한 어노테이션 중 하나로, Spring Boot Application을 개발하는 데 사용 됩니다. 해당 어노테이션을 사용하면 Spring BootApplication 설정을 자동으로 구성하고, 필요한 Spring Bean 들을 자동으로 검색하여, classpath에 있는 라이브러리들을 기반으로 자동 구성을 활성화합니다. @SpringBootApplication에서는 내부적으로 다음과 같은 일을 수행합니다


https://jaxlondon.com/wp-content/uploads/2020/09/WJAX20_Blog_58674_v1a-scaled-1.jpg?x25603

@SpringBootConfiguration

Spring Boot에서 사용되는 특수한 유형의 @Configuration으로, 설정 클래스를 지정할 수 있습니다. 클래스 내부에 @Bean 을 사용하여 Bean 정의 메서드를 작성할 수 있습니다.

 

@ComponentScan

스프링이 현재 패키지와 하위 패키지를 스캔하여 컨트롤러, 서비스, 레포지토리 등과 같은 스프링 구성요소들을 자동으로 검색하고 등록할 수 있도록 합니다. 또한 개발자가 클래스에 붙인 어노테이션을 스캔하여 Bean으로 등록해 줍니다. 

 

참고로 모든 어노테이션을 스캔하여 Bean으로 등록해주지는 않습니다.

 

그림과 같이 @Component를 상속받은 클래스에서만 빈으로 등록해 줍니다. 대표적으로 @Controller, @Service, @Repository, @RestController 등이 @Component에 상속을 받으며, 스프링 애플리케이션이 작동될 때, 해당 어노테이션이 붙여진 클래스들을 빈으로 등록해 줍니다. 

 

@EnableAutoConfiguration

Configuration과 동일하게, Bean을 등록하는 자바 설정 파일입니다. spring.factories 내부에 여러 Configuration들이 존재하고, 조건에 따라 Bean으로 등록합니다.  spring-boot-starter 안에는 자동 설정을 위해 spring-boot-autoconfigure 라이브러리가 포함되어 잇습니다. @EnableAutoConfiguration도 해당 라이브러리에 포함되어 있으며, META-INF/spring.factories 파일이 존재합니다.

 

 

spring.factories를 열어보면 Auto Configure 밑에 있는 클래스들이 모두 자동 설정의 대상이 됩니다. 일반 적으로 스프링부트 환경에서 라이브러리를 추가한다면, 해당 라이브러리의 자동 설정 파일은 spring.factories에 정의가 되고, 정의된 설정은 스프링 부트가 기동 시 실행하여 빈등록이나 추가 초기화 작업을 수행하게 됩니다. 

 

@SpringBootApplication Spring Boot Application의 초기화와 설정을 크게 단순화시키고, 빠르게 개발할 수 있도록 도와줍니다.


반응형
 

Difference between @SpringBootApplication and @EnableAutoConfiguration in Spring Boot

Understanding the key differences and Usage of @SpringBootApplication and @EnableAutoConfiguration in Spring Boot Applications

medium.com

 

Spring Boot Auto Configuration - JAX London 2023

Spring Boot has always fascinated me. No more fiddling around with different versions of application servers and different environments between local development, testing and production. If you deal with Spring Boot, you quickly come across the term Auto C

jaxlondon.com

 

[Spring Boot] 자동 설정 @EnableAutoConfiguration

메인 클래스에 붙어 있는 @SpringBootApplication은 크게 3가지가 합쳐진 것이라고 생각할 수 있다. @SpringBootConfiguration @ComponentScan @EnableAutoConfiguration 스프링 부트 어플리케이션은 Bean을 2번 등록한다.

velog.io

 

@SpringBootApplication에 대해서(Springboot 기본구조)

스프링부트 기본 프로젝트를 생성하면 main메서드를 포함하는 시작 클래스가 있고, 이 클래스에는 @SpringBootApplication이 마킹되어 있다. @SpringBootApplication는 다수의 애노테이션으로 이루어진 메타

yangbox.tistory.com

728x90
728x90