• 어플리케이션의 부트스트랩 (구동)
@EnableScheduling // 스프링 부트에서 스케줄러가 작동하게 합니다.
@EnableJpaAuditing // 시간 자동 변경이 가능하도록 합니다.
@SpringBootApplication // 스프링 부트임을 선언합니다.
public class SpringcoreApplication {
   public static void main(String[] args) {
      SpringApplication.run(SpringcoreApplication.class, args);
   }
}

 

@SpringBootApplication은 세 개의 어노테이션이 결합한 것이다.

  • @SpringBootConfiguration
  • @EnableAutoConfiguration
  • @ComponentScan

 

@SpringBootConfiguration

: 현재 클래스를 구성 클래스로 지정한다. 필요하다면 자바 기반의 스프링 프레임워크 구성을 현재 클래스에 추가할 수 있다. 

 

@EnableAutoConfiguration

: 스프링 부트 자동-구성을 활성화 한다. 우리가 필요로 하는 컴포넌트들을 자동으로 구성하도록 스프링 부트에게 알려주는 역할

 

@ComponentScan

: 컴포넌트 검색을 활성화 한다. 이 어노테이션을 통해 @Controller, @Service, @Component 등의 어노테이션과 함께 클래스를 선언할 수 있게 해준다. -> 스프링이 자동으로 위의 어노테이션이 선언되어있는 클레스를 찾아 스프링 어플리케이션 컨텍스트에 컴포넌트로 등록한다.

 

 

===========================================================================================

 

@Controller, @Service, @Repository 등은 @Component의 좀 더 명확한 케이스라고 보시면 됩니다.

실제로 API를 보시면 이들 어노테이션 모두 @Component를 가지고 있습니다. 

 

참고: 사실 애노테이션에는 상속관계라는 것이 없다. 그래서 이렇게 애노테이션이 특정 애노테이션을 들고
있는 것을 인식할 수 있는 것은 자바 언어가 지원하는 기능은 아니고, 스프링이 지원하는 기능이다.

 

@Component가 붙어있는 클레스를 메모리에 로딩해라  (IoC)

@Autowired - 메모리에 로딩된 객체를 해당 변수에 집어 넣어라 (DI)

 

* 스프링이 클레스를 분석하는 기법 - 리플렉션  -> 런타임시 분석

 

 

 

+ Recent posts