IoC 동작 순서
main() 실행
↓
SpringApplication.run()
↓
[1] IoC 컨테이너 생성
[2] 컴포넌트 스캔
[3] BeanDefinition 등록
[4] Bean생성 (new)
[5] 의존성 주입(DI)
[6] AOP 프록시 적용 (Transactional 등)
[7] Bean 초기화(@PostConstruct)
[8] 내장 톰캣 실행 → 앱 동작 시작
IoC 컨테이너 종류
IoC 컨테이너 내부 구조
Map<String, BeanDefinition> beanDefinitionMap
Map<String, Object> singletonObjects
Map<String, Object> earlySingletonObjects
Map<String, ObjectFactory<?>> singletonFactories
List<BeanPostProcessor> beanPostProcessors
Map<String, String> aliasMap
실제로 bean을 만드는 과정
IoC의 핵심은 BeanFactory 이므로 다음 3가지가 중요하다.