@SpringBootApplication란?

SpringBoot 프로젝트를 생성하면 메인 클래스와 함수가 자동으로 생성됩니다. 그리고 그 클래스에는 @SpringBootApplication 어노테이션이 달려있습니다.

@SpringBootApplication
public class MainApplication{

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

아래의 코드는 @SpringBootApplication 입니다

@SpringBootApplication은 여러개의 어노테이션으로 구성되어 있습니다

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

@Target

@Target은 어노테이션이 적용될 수 있는 위치를 사용자가 정하는 것을 말합니다

@Target({ElementType.XXXX, ElementType.XXXX,…}) 와 같이 여러개의 타입을 지정하는 방법도 있습니다

이중 TYPE이란 클래스/생성자/메소드 등등에 적용되는 것을 말합니다

@Retention