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); }
原文转载:http://www.shaoqun.com/a/520029.html
c88:https://www.ikjzd.com/w/1017.html
houzz:https://www.ikjzd.com/w/236
1.创建一个新的AnnotationConfigApplicationContext,从给定的组件类派生bean定义,并自动刷新上下文。AnnotationConfigApplicationContextcontext=newAnnotationConfigApplicationContext(MyConfig.class);2.可以看到AnnotationConfigApplicationCon
商标抢注:商标抢注
retriever:retriever
亚马逊店铺销量突然下滑?快看看是不是被这款插件标记成了"危 险 店铺":亚马逊店铺销量突然下滑?快看看是不是被这款插件标记成了"危 险 店铺"
速卖通爆品计划:速卖通爆品计划
Exact match(精确匹配):Exact match(精确匹配)
没有评论:
发表评论