spring容器启动-源码分析-AnnotationConfigApplicationContext--this()--1

2021/6/21 11:56:07

本文主要是介绍spring容器启动-源码分析-AnnotationConfigApplicationContext--this()--1,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

前段时间,通过画脑图记录的方式深入分析了一下:spring底层容器的刷新过程,现在拆分为博客,分享一下。后面会附上脑图的原文件,供大家查看。

public class BeanAutowired {

    public static void main(String[] args) {
        ApplicationContext applicationContext = new AnnotationConfigApplicationContext(BeanConfig.class);
        String[] beanDefinitionNames = applicationContext.getBeanDefinitionNames();
        for (String beanDefinitionName : beanDefinitionNames) {
            System.out.println(beanDefinitionName);
        }
    }

}

  

这个是代码入口,基于spring Initalizr,新建一个springboot项目就好。sping会自动引入,相关jar。

重要前言:本源码分析,限于:基于注解的容器刷新,和spingboot没有关系,属于最底层的ioc容器刷新过程。后续,有时间,再写基于springboot的源码分析。

进入源码AnnotationConfigApplicationContext,构造器
	public AnnotationConfigApplicationContext(Class<?>... componentClasses) {
		this();//AnnotationConfigApplicationContext容器无参构造器;======父级GenericApplicationContext();无参构造器。创建this.beanFactory = new DefaultListableBeanFactory();
		register(componentClasses);//注册相关信息
		refresh();//刷新容器。核心
	}

 进入this();

 

 

 进入this.reader = new AnnotatedBeanDefinitionReader(this);

 

 

 

 进入:this.conditionEvaluator = new ConditionEvaluator(registry, environment, null); 配置基本的环境信息

 

 

 进入:AnnotationConfigUtils.registerAnnotationConfigProcessors(this.registry);注册各个注解模式需要的后置处理器, 默认工厂也是在这里设置的

 

 

 

 进入:

this.scanner = new ClassPathBeanDefinitionScanner(this); 指定bean定义扫描器,@Component注解的支持,就是在这里设置的。



 

 至此,AnnotationConfigApplicationContext源码的第二行:this();就分析完了。主要是设置一些基础的功能。后面继续分析

 



这篇关于spring容器启动-源码分析-AnnotationConfigApplicationContext--this()--1的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程