[코드 1-1]

@SpringBootApplication
public class CoffeeApplication {

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

}

[코드 1-1]과 같이 Spring Boot Application 클래스에 @SpringBootApplication 애너테이션을 추가하면 기본적으로 해당 애플리케이션이 Spring Boot 기반의 애플리케이션으로 동작하도록 해줍니다.

 

그렇다면 @SpringBootApplication 은 내부적으로 어떤 기능을 하는 걸까요?

@SpringBootApplication 은 다음과 같은 세 가지 기능을 활성화 하는데 사용됩니다.

  • @EnableAutoConfiguration
    • Spring Boot의 자동 구성 메카니즘을 활성화합니다.
  • @ComponentScan
    • 애플리케이션 내의 패키지에서 @Component 애너테이션이 붙은 클래스들에 대한 스캐닝을 활성화합니다.
  • @SpringBootConfiguration
    • Spring Context에 Bean을 추가적으로 등록하거나 Configuration 클래스를 추가적으로 임포트 하는 기능을 활성화합니다.
    • Spring Boot의 @*Test 애너테이션을 사용해서 테스트를 진행할 경우,  자동으로 @SpringBootConfiguration을 검색합니다.

 

@SpringBootApplication 을 무조건 붙여야 하는것은 아니며, [코드 1-2]와 @SpringBootApplication 이 지원하는 세 가지 기능을 개별적으로 적용할 수 있습니다.

[코드 1-2]

@SpringBootConfiguration(proxyBeanMethods = false)
@EnableAutoConfiguration
@Import({ CoffeeConfiguration.class, MemberConfiguration.class })
public class CoffeeApplication {

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

}

+ Recent posts

출처: http://large.tistory.com/23 [Large]