Spring 源码(一)Spring 容器的入口

2019-09-29  本文已影响0人  xiaolyuh

Spring 容器的初始化

ApplicationContext context = new AnnotationConfigApplicationContext(MyConfig.class);

当我们完成一个ApplicationContext的实例化时就完成了Spring容器的初始化,而AnnotationConfigApplicationContext的构造方法也就是Spring容器的入口。

// 初始化容器
public AnnotationConfigApplicationContext(Class<?>... annotatedClasses) {
    // 注册 Spring 内置后置处理器的 BeanDefinition 到容器
    this();
    // 注册配置类 BeanDefinition 到容器
    register(annotatedClasses);
    // 加载或者刷新容器中的Bean
    refresh();
}

这个构造方法只有三行:

  1. 注册内置的BeanPostProcessor的BeanDefinition到容器
  2. 注册配置类 BeanDefinition 到容器
  3. 加载或者刷新容器中的Bean

容器的初始化过程我认为大致分为:

  1. 注册内置的BeanPostProcessor的BeanDefinition到容器
  2. 注册配置类 BeanDefinition 到容器
  3. 解析配置类
  4. 初始化所有单例Bean,并注册到容器

AnnotationConfigApplicationContext 总揽

我们来看下AnnotationConfigApplicationContext的类图:


AnnotationConfigApplicationContext.png

用户使用容器时,可以使用转义符"&"来得到FactoryBean本身,如果不加则是获取FactoryBean产生的对象。

BeanFactory和FactoryBean的区别

BeanFactory和ApplicationContext的区别

上一篇下一篇

猜你喜欢

热点阅读