![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Spring源码
zhaowei0720
这个作者很懒,什么都没留下…
展开
-
基于Java-based的Spring源码解读(十)
上一篇已经分析完了AnnotationConfigApplicationContext构造函数内AnnotatedBeanDefinitionReader的初始化过程。再来回顾下AnnotationConfigApplicationContext构造函数的内容:public AnnotationConfigApplicationContext() { this.reader = new AnnotatedBeanDefinitionReader(this); this.scanner = ne原创 2020-07-23 01:54:09 · 114 阅读 · 0 评论 -
基于Java-based的Spring源码解读(九)
接着上一篇,上一篇讲到了,调用工具类注册后置处理器,主要做一些初始化工作,如初始化比较器、自动注入解析器及在Spring IOC容器内部与用户无关的一些解析器等。今天分析下面这段代码private static BeanDefinitionHolder registerPostProcessor( BeanDefinitionRegistry registry, RootBeanDefinition definition, String beanName) { definition.s原创 2020-07-22 02:17:22 · 168 阅读 · 0 评论 -
基于Java-based的Spring源码解读(八)
接着上一篇,上一篇已经分析完了ConditionEvaluator的创建过程。接下来分析AnnotationConfigUtils.registerAnnotationConfigProcessors(this.registry);在AnnotatedBeanDefinitionReader读取器的构造函数内调用工具类,根据给定的registry注册所有注解相关的后置处理器。源码如下:public static Set<BeanDefinitionHolder> regis原创 2020-07-21 01:56:12 · 141 阅读 · 0 评论 -
基于Java-based的Spring源码解读(七)
经历了前几天晕头转向debug,现在终于找到阅读源码的感觉了,配合时序图阅读主线,不懂的细枝末节先跳过,废话不多说,进入今天的主题昨天分析到AnnotatedBeanDefinitionReader构造函数的初始化,代码如下public AnnotatedBeanDefinitionReader(BeanDefinitionRegistry registry, Environment environment) { Assert.notNull(registry, "BeanDefinitionR原创 2020-07-20 23:33:31 · 123 阅读 · 0 评论 -
基于Java-based的Spring源码解读(六)
接下来分析下AnnotatedBeanDefinitionReader的执行过程,即下面这段代码public AnnotationConfigApplicationContext() { this.reader = new AnnotatedBeanDefinitionReader(this); this.scanner = new ClassPathBeanDefinitionScanner(this);}时序图如下:获取Environment的逻辑如下:/** *原创 2020-07-20 01:09:46 · 136 阅读 · 0 评论 -
基于Java-based的Spring源码解读(五)
接着上一篇Spring源码解读(三)前两天实在读晕了,借鉴了郝佳的《Spring源码深度解读》的思路,配合UML类图、时序图等手段,帮助我们理解。容器时序图如下:时序图从AppConfigTest测试类开始,从时序图我们可以一目了然的看出ApplicationContext容器执行的处理逻辑。首先在测试类创建AnnotationConfigApplicationContext实例,并调用自身的构造函数,在该构造函数内分别实例化AnnotatedBeanDefinitionReader、Class原创 2020-07-19 23:59:23 · 136 阅读 · 0 评论 -
基于Java-based的Spring源码解读(四)
万事开头难,也许对像我这样阶段的coder,阅读Spring源码难度稍显大了一点,源码绕来绕去,很难从思想层面去理解Spring源码,这段代码为什么这么写。或许应该换一种思路,要是我来写应该怎么实现,跟大师的实现对比一下,也许可以帮助理解源码。今天先写一下心得。源码层面还没想好应该怎么写。...原创 2020-07-19 01:41:14 · 114 阅读 · 0 评论 -
基于Java-based的Spring源码解读(三)
说心里话,不读不知道,一读吓一跳,今天真是被绕晕了,真是山路十八弯,读源码真是一定要有个好的方法,最好配着UML工具,边读边做记录,不然真像我似的被绕晕。ApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);今天从这一行代码入手。我们知道new对象的时候会经过类的加载及初始化。先初始化AbstractApplicationContext,再初始化GenericApplicatio原创 2020-07-17 00:58:28 · 126 阅读 · 0 评论 -
基于Java-based的Spring源码解读(二)
上一篇文章介绍到了AnnotationConfigApplicationContext的类图,今天来分析下每个接口的功能及Spring构建该类图的一些思想及设计原则BeanFactory:Spring Bean容器的顶级接口,定义了获取Bean、判断是否单例、获取类型、获取别名等与Bean及其属性相关的方法。因此功能主要是获取Bean及其属性 MessageSource:用于解析消息的策略接口,支持此类消息的参数化和国际化。从给定的消息源解析并获取消息 ListableBeanFactory:Bea原创 2020-07-16 01:31:36 · 128 阅读 · 0 评论 -
基于Java-based配置Spring源码解读(一)
经过前几天的准备终于可以进入源码了Spring配置有三种方式:XML配置 注解配置 Java-based配置Spring5后推荐我们使用Java-based配置的方式,因此本篇文章以Java-based配置为切入点开始源码的阅读有对Java-based配置不了解的小伙伴,可以参考官方文档好了,废话少说让我们进入正题首先右键Spring工程创建基于Gradle的module,如下图接着在创建好的工程创建Java配置package stu.sp...原创 2020-07-15 03:03:31 · 216 阅读 · 0 评论 -
Spring源码 环境搭建
Spring已经由之前额SVN迁移到了GitHub,而且也改为基于Gradle构建项目,所以是构建Spring源码环境首先要安装Gradle。Gradle环境搭建步骤 进入Gradle官网,点击Install Gradle 向下拖到滚动条,进入到下面的画面,选择complete,也可以选择Binary-only下载完成后,解压到指定目录,如D:\program files\gradle-6.5.1 配置环境变量,并将%GRADLE_HOME%\bin添加到Path验证,win原创 2020-07-14 00:57:17 · 483 阅读 · 0 评论 -
Spring思想
文章题目之所以叫Spring思想,是想强调下学习Spring的过程中,除了掌握Spring的整体架构、深入重要细节的同时,也要注意学习Spring的哲学,就像Spring官网上介绍的Design Philosophy:Provide choice at every level Accommodate diverse perspectives Care about API design Set high standards for code qualitySpring之所以历久弥新,跟它的设计哲.原创 2020-07-13 00:28:35 · 379 阅读 · 0 评论