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的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-27消息中间件底层原理资料详解
- 2024-11-27RocketMQ底层原理资料详解:新手入门教程
- 2024-11-27MQ底层原理资料详解:新手入门教程
- 2024-11-27MQ项目开发资料入门教程
- 2024-11-27RocketMQ源码资料详解:新手入门教程
- 2024-11-27本地多文件上传简易教程
- 2024-11-26消息中间件源码剖析教程
- 2024-11-26JAVA语音识别项目资料的收集与应用
- 2024-11-26Java语音识别项目资料:入门级教程与实战指南
- 2024-11-26SpringAI:Java 开发的智能新利器