스프링 컨테이너는 @SpringBootApplication에 의해 생성됨
@SpringBootApplication
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}
스프링 컨테이너는 @Bean, @Component 로 마킹된 객체들을 컨테이너에 포함하며 싱글턴으로 관리하고
필요로 하는 곳에 주입함. 이 과정에서 주입받는 객체는 주입되는 객체가 먼저 초기화될 것을 요구하는데(주입되는 객체 뿐 아니라 내부에 별도로 선언된 빈도 포함), 순환 의존성 문제가 있을 경우 어플리케이션이 실행되지 않음
(@Controller, @Service, @Repository 등은 @Component을 포함)
의존성 주입에 관해서는 여기에
순환 의존성 관해서는 여기에