【源码分析】@Configuration源码分析1

本次学习分为两个,一个是流程大概的梳理,一个是源码的分析,可以对照者流程图看源码分析。

@Configuration源码分析1

@Configuration源码分析2

按照注册流程和实例化流程来深入分析@Configuration注解在Spring源码层面的执行流程。

注意:Spring IOC容器在启动时,会向IOC容器中注册ConfigurationClassPostProcessor类的bean定义信息和使用@Configuration注解标注的ConfigurationAnnotationConfig配置类的Bean定义信息。
当Spring IOC容器在刷新时,会递归处理所有使用@Configuration注解标注的类,解析@Bean等注解标注的方法,解析成一个个ConfigurationClassBeanDefinition类型的BeanDefinition对象,注册到IOC容器中。

注册ConfigurationClassPostProcessor流程源码解析

先看调用流程图:
从下图可以看出来 Spring IOC容器启动时,向IOC容器中注册ConfigurationClassPostProcessor类的Bean定义信息时,会涉及到AnnotationConfigApplicationContext类、AnnotatedBeanDefinitionReader类和AnnotationConfigUtils类中方法的调用。

【源码分析】@Configuration源码分析1_第1张图片

注册ConfigurationAnnotationConfig流程源码解析

看下图:
可以看出Spring IOC容器启动时,向IOC容器中注册ConfigurationAnnotationConfig类的Bean定义信息时,会涉及到AnnotationConfigApplicationContext类、AnnotatedBeanDefinitionReader类、BeanDefinitionReaderUtils类和DefaultListableBeanFactory类的方法调用。
【源码分析】@Configuration源码分析1_第2张图片

实例化流程-流程图

Spring IOC容器在启动过程中,最终会调用AnnotationConfigApplicationContext类的refresh()方法刷新IOC容器,刷新IOC容器的过程中就会对标注了@Configuration注解的配置类进行实例化。
【源码分析】@Configuration源码分析1_第3张图片

你可能感兴趣的:(#,spring,java,mybatis)