创建BeanFactory
- 开始会创建这个类AnnotationConfigApplicationContext
- 会调用这个的构造方法
- 启动的第一步
- 这个类是有父类的 GenericApplicationContext
- 会先执行父类的构造方法
- 这里 beanFactory的主角 DefaultListableBeanFactory 登场
- DefaultListableBeanFactory 的构造方法也会初始化一些东西
-
public AbstractAutowireCapableBeanFactory() { super(); ignoreDependencyInterface(BeanNameAware.class); ignoreDependencyInterface(BeanFactoryAware.class); ignoreDependencyInterface(BeanClassLoaderAware.class); if (NativeDetector.inNativeImage()) { this.instantiationStrategy = new SimpleInstantiationStrategy(); } else { this.instantiationStrategy = new CglibSubclassingInstantiationStrategy(); } }
-
NativeDetector.inNativeImage()默认是false
- this()
-
public AnnotationConfigApplicationContext() { StartupStep createAnnotatedBeanDefReader = this.getApplicationStartup().start("spring.context.annotated-bean-reader.create"); // 额外会创建StandardEnvironment this.reader = new AnnotatedBeanDefinitionReader(this); createAnnotatedBeanDefReader.end(); this.scanner = new ClassPathBeanDefinitionScanner(this); }
- 会创建BD 的读取器 ,给reader一个类的class对象,就能解析生成BD
- 会创建BD的扫描器,扫描包的字节码文件 ,解析生成BD
-