@SpringBootApplication

weather·2021년 3월 6일
0

TIL

목록 보기
4/9

1. XXXApplicatio.java

스프링부트는 main 메소드가 선언된 클래스를 기준으로 실행된다.

import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;

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

@SpringBootApplication

  • 스프링 부트의 기본 설정들을 선언 (스프링 Bean 읽기와 생성을 모두 자동으로 설정)
  • @SpringBootApplication 이 있는 위치부터 설정을 읽어가기 때문에 XXXApplication.java 클래스는 항상 프로젝트 최상단에 위치

SpringApplication.run()

  • SpringApplication.run()으로 내장 WAS를 실행 (항상 서버에 톰캣을 설치할 필요가 없게되고, 스프링 부트로 만들어진 Jar파일로 실행)


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

	@AliasFor(annotation = EnableAutoConfiguration.class)
	Class<?>[] exclude() default {};

	@AliasFor(annotation = EnableAutoConfiguration.class)
	String[] excludeName() default {};

	@AliasFor(annotation = ComponentScan.class, attribute = "basePackages")
	String[] scanBasePackages() default {};

	@AliasFor(annotation = ComponentScan.class, attribute = "basePackageClasses")
	Class<?>[] scanBasePackageClasses() default {};

	@AliasFor(annotation = ComponentScan.class, attribute = "nameGenerator")
	Class<? extends BeanNameGenerator> nameGenerator() default BeanNameGenerator.class;

	@AliasFor(annotation = Configuration.class)
	boolean proxyBeanMethods() default true;

}

@ComponentScan

  • @component 어노테이션 및 @Service, @Repository, @Controller 등의 어노테이션을 스캔하여 Bean으로 등록해주는 어노테이션.

@EnableAutoConfiguration

  • 사전에 정의한 라이브러리들을 Bean으로 등록해 주는 어노테이션.
  • 사전에 정의한 라이브러리들 모두가 등록되는 것은 아니고 특정 Condition(조건)이 만족될 경우에 Bean으로 등록
  • 사전 정의 파일 위치
    Dependencies > spring-boot-autoconfigure > META-INF > spring.factories
profile
Sin prisa, pero sin pausa

0개의 댓글