Spring

[Spring Boot] AutoConfiguration 이란?

728x90

AutoConfiguration 즉 자동 환경설정은 스프링부트의 가장 큰 장점 중 하나입니다. 비즈니스 로직을 제외한 많은 부분에서 개발자가 직접 구현하거나 코드를 써야하는 일을 줄여주기 때문입니다.

 

오늘은 스프링부트의 이러한 자동 설정환경이 어디서부터 어떻게 실행되고, 무엇을 실행시켜주는지 알아봅시다!


스프링 부트(Spring Boot)의 시작

@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

스프링 부트 프로젝트를 처음 생성하면 다음과 같은 메인 애플리케이션 클래스를 보실 수 있습니다. main() 메소드가 존재하는 걸 보니 여기서부터 모든 것이 실행된다고 보시면 됩니다.

음.. 너무 단순한데요? 라고 할수도 있는데 저 @SpringBootApplication 어노테이션이 정말 많은 것을 담고있다는것 알고계셨나요??


@SpringBootApplication 어노테이션

@SpringBootApplication 어노테이션은 다음을 포함합니다

  • @SpringBootConfiguration
  • @ComponentScan: 자기 자신부터 시작해서, 하위 패키지를 싹 훑어서 @Component라는 어노테이션을 붙인 클래스들을 찾아서 Bean으로 등록합니다. 구체적인 검색 대상은 @Configuration @Repository @Service @Controller @RestController 어노테이션이 명시된 클래스입니다.
  • @EnableAutoConfiguration: Spring Boot Dependency jar 파일 내에 META-INF 폴더에 spring.factories 파일을 열면 자동 설정 목록을 확인 할 수 있습니다. 이 목록이 자동 설정 조건에 따라 bean으로 등록됩니다.

결과적으로 @ComponentScan, @EnableAutoConfiguration을 통해 수많은 Bean들이 구동전에 자동으로 생성이 되고 애플리케이션이 구동됩니다.

 

출처:
- [SpringBoot] 자동환경설정::AutoConfiguration 까보기
- [스프링 부트 개념과 활용] 자동 설정 (Auto Configuration)

 

728x90