1.創建一個新的AnnotationConfigApplicationContext,從給定的組件類派生bean定義,并自動重繪背景關系,
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(MyConfig.class);
2. 可以看到AnnotationConfigApplicationContext的傳入主配置類的構造方法:
public AnnotationConfigApplicationContext(Class<?>... componentClasses) { this(); register(componentClasses); refresh(); }
3.點擊this()方法

4.首先會呼叫無參建構式

5.然后會呼叫AnnotationConfigApplicationContext的父類GenericApplicationContext的無參構造,初始化beanFactory(DefaultListableBeanFactory)

6.同時也會呼叫AbstractApplicationContext的無參構造方法創建資源決議器

7.以及DefaultResourceLoader的無參構造方法創建默認資源加載器

8.最后再初始化注解模式下的BeanDefinition讀取器,以及類路徑下面的BeanDefinition掃描器

9.至此this()執行完成,總結下:
this()通過呼叫無參的構造器,會呼叫父類的無參構造器GenericApplicationContext#GenericApplicationContext(),創建IOC容器
public GenericApplicationContext() { //創建IOC容器 this.beanFactory = new DefaultListableBeanFactory(); }
呼叫自己的構造方法AnnotationConfigApplicationContext#AnnotationConfigApplicationContext(),給IOC賦值
public AnnotationConfigApplicationContext() { //為IOC容器賦值 AnnotatedBeanDefinitionReader(注解的Bean定義讀取器) this.reader = new AnnotatedBeanDefinitionReader(this); //為IOC容器賦值 類路徑下的bean定義掃描器 this.scanner = new ClassPathBeanDefinitionScanner(this); }
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/253810.html
標籤:Java
上一篇:Mysql優化操作學習紀錄
下一篇:面向物件及方法的呼叫
