1.【spring源码解析】俯瞰spring bean的生命周期

一、Spring 容器高层视图(高度概括版)

Spring 启动时读取应用程序提供的Bean配置信息,并在Spring容器中生成一份相应的Bean配置注册表,然后根据这张注册表实例化Bean,装配号Bean之间的依赖关系,为上层应用提供准备就绪的运行环境。

①创建springIOC容器的两种方式

②以JavaConfig风格+注解的方式来创建IOC容器为例查看创建的过程

//根据参数类型可以知道,其实可以传入多个annotatedClasses,但是这种情况出现的比较少
public AnnotationConfigApplicationContext(Class<?>... annotatedClasses) {
    //调用无参构造函数,会先调用父类GenericApplicationContext的构造函数
    //父类的构造函数里面就是初始化DefaultListableBeanFactory,并且赋值给beanFactory
    //本类的构造函数里面,初始化了一个读取器:AnnotatedBeanDefinitionReader read,一个扫描器ClassPathBeanDefinitionScanner scanner
    //scanner的用处不是很大,它仅仅是在我们外部手动调用 .scan 等方法才有用,常规方式是不会用到scanner对象的
    this();
    //把传入的类进行注册,这里有两个情况,
    //传入传统的配置类
    //传入bean(虽然一般没有人会这么做
    //看到后面会知道spring把传统的带上@Configuration的配置类称之为FULL配置类,不带@Configuration的称之为Lite配置类
    //但是我们这里先把带上@Configuration的配置类称之为传统配置类,不带的称之为普通bean
    //配置文件中每一个<bean>解析成一个BeanDefinition对象,并保存到BeanDefinitionRegistry中;
    register(annotatedClasses);
    //刷新
    refresh();
}

③其中refresh方法是重点,refresh方法的流程图如下

猜你喜欢

转载自blog.csdn.net/weixin_42228338/article/details/94580410