본문 바로가기

⭐ SpringBoot/개발하면서 정리

@SpringBootApplication 의 의미

# @SpringBootApplication 의 의미

- 보통 메인 메소드에 해당 어노테이션을 붙여서 사용 하는 경우가 많다.

그럼 @SpringBootApplication이 가지고 있는 기능이 무엇인지 보면 아래와 같다.

@Target({ElementType.TYPE}) 
@Retention(RetentionPolicy.RUNTIME) 
@Documented 
@Inherited 
@SpringBootConfiguration 
@EnableAutoConfiguration 
@ComponentScan(excludeFilters = {@org.springframework.context.annotation.ComponentScan.Filter(type = org.springframework.context.annotation.FilterType.CUSTOM, classes = {org.springframework.boot.context.TypeExcludeFilter.class}),@org.springframework.context.annotation.ComponentScan.Filter(type = org.springframework.context.annotation.FilterType.CUSTOM, classes = {org.springframework.boot.autoconfigure.AutoConfigurationExcludeFilter.class})}) 
public @interface SpringBootApplication
extends java.lang.annotation.Annotation

- 위의 어노테이션 집합을 보면 7개의 어노티에션을 확인 할 수 있다.

하나하나의 의미를 간단하게 알아보고 넘어가자.

@Target : @Target 어노테이션은 사용할 어노테이션을 적용할 대상을 지정하는 데 사용한다.

@Retention : @Retention은 어노테이션이 실제로 적용되고 유지되는 범위를 의미한다.

@Documented : Javadocs에 어노테이션의 사용을 문서화해주게 하는 어노테이션이다.

@Inherited : 자식 클래스에 부모 클래스의 어노테이션을 가지도록 하기 위해(propagate) 사용하는 어노테이션입니다.

@SpringBootConfiguration : @SpringBootConfiguration은 어플리케이션의 구성을 제공하는 class-level의 어노테이션이다. 해당 어노테이션을 통해 Spring 컨테이너는 @Bean으로 정의된 클래스 메소드를 처리해 Bean을 생성한다.

@EnableAutoConfiguration : @EnableAutoConfiguration이라는 어노테이션은 스프링부트에서 미리정의해둔 bean 설정(configuration)들을 사용하게되어서 우리는 아무설정없이 SpringBoot를 이용하는 것 처럼 보이게 되는 것이다.

@ComponentScan : @ComponentScan은 스프링부트에서 제공하는 어노테이션으로써, 스프링 빈으로 만들기 위한 컴포넌트를 스캔할 곳을 설정하는 역할을 합니다.

# 실제 테스트 해보기

음... 테스트 프레임워크에 SpringBootBatchJob을 2개 등록을 해놓았다.

해당 배치잡을 @SpringBootApplication 을 붙이면 어떤 결과가 나오는지 확인해보면 아래와 같다.

1개의 Job은 first_job 이라고 이름을 붙였고, 다른 하나는 simple_job이라고 붙였다. 결과를 보면 아래와 같다.

결과는 생각보다 간단하다. 일단 SpringBoot의 main 메소드를 실행시키면 위의 그림과 같이 main 메소드와 함께 배치 메소드1,2가 실행된다. 그러니까 @SpringBootApplication이 붙은 클래스는 메인 클래스가 실행될때 함께 실행이 된다고 볼 수 있다.

 

- 끝 -

'⭐ SpringBoot > 개발하면서 정리' 카테고리의 다른 글

<dto> dto에서 null값 제거하기  (0) 2023.08.29