- 어플리케이션의 부트스트랩 (구동)
@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)
* 스프링이 클레스를 분석하는 기법 - 리플렉션 -> 런타임시 분석
'프로그래밍 > SpringBoot' 카테고리의 다른 글
스프링 시큐리티 (spring-boot-starter-security) (0) | 2022.05.30 |
---|---|
회원 관리 기능 요구사항 및 설계 (0) | 2022.05.30 |
DI(의존성 주입), IOC(제어의 역전) (0) | 2022.05.29 |
Controller, Service, Repository의 역할 (0) | 2022.05.29 |
Controller의 이해 (0) | 2022.05.29 |