스프링 부트 @SpringBootApplication

반응형
728x90
반응형

스프링 부트

스프링 부트의 기반은 스프링 프레임워크다. 스프링 프레임워크는 의존성 주입(Dependency Injection) 개념을 기반으로 되어있고, XML 구성파일을 사용한다. 기능이 점차 증가되면서 XML 구성 파일을 사용하는건 점점 부담이되어, 스프링부트가 출시되었다.

 

스프링 부트는 스프링 프레임워크 + 서드파티(제 3자의 기업) 제품으로 구성되어있고, 핵심 모듈의 설정 방식을 개선하여 빠르게 개발할 수 있도록 스프링 프레임워크 보다 개선된 프레임워크다. 스프링 부트는 기본 구성이 적용되어있어, 추가적인 설정을 최소화하고 필요한 경우에만 구성을 작성한다. 또한 독립형 JAR 파일 기반의 런타임 모델도 지원한다. (이전에는 WAR 파일로 배포 및 실행)

 

 

 

@SpringBootApplication

스프링 부트 프로젝트를 생성하면 XXApplication 파일이 자동적으로 생성되는데, 해당 파일의 상단에 @SpringBootApplication 어노테이션이 선언되어있다. 

 

1) 컴포넌트 검색을 활성화하여 애플리케이션 클래스의 패키지와 하위 모든 패키지에서 스프링 컴포넌트와 구성 클래스를 검색한다.
2) 애플리케이션 클래스 자체를 구성 클래스로 만든다.
3) 자동 설정을 활성화하여 스프링 부트가 설정 가능한 JAR 파일을 classpath 에서 자동으로 찾게한다. (톰캣이 classpath에 있는 경우 스프링 부트는 톰캣을 내장형 웹 서버로 자동 구성한다.)

 

해당 어노테이션은 스프링 부트 프레임워크에서 시작점이다. 해당 어노테이션을 따라 들어가보면 아래의 파일로 선언되어있다.

 

@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 {
	...
}

 

@SpringBootApplication 어노테이션은 @Configuration 어노테이션과 동일하다고 볼 수 있다. 대부분의 어노테이션은 이미 스프링 프레임워크에서 공부했을 것이라고 생각한다. 몇개의 어노테이션에 대해 정리해보자.

 

1) @EnableAutoConfiguration

미리 정의되어있는 빈을 가져와서 등록한다. @Component 어노테이션으로 이미 @Component 가 선언되어있는 클래스 (또는 @Configuration, @Controller, @Service 등) 를 찾아서 bean 으로 등록해주고있지만 그 외의 추가적인 bean 을 찾아서 추가해준다. 

 

spring.facotires

 

위 메타 파일을 읽어들임으로써 추가적으로 bean 등록을 진행한다.

 

 

2) @SpringBootConfiguration

스프링 프레임워크의 @Configuration 어노테이션과 동일하다고 볼 수 있다.

 

 

 

 

 

 

 

반응형

Designed by JB FACTORY