- 博客(14)
- 收藏
- 关注
原创 基于Java-based的Spring源码解读(十)
上一篇已经分析完了AnnotationConfigApplicationContext构造函数内AnnotatedBeanDefinitionReader的初始化过程。再来回顾下AnnotationConfigApplicationContext构造函数的内容:public AnnotationConfigApplicationContext() { this.reader = new AnnotatedBeanDefinitionReader(this); this.scanner = ne
2020-07-23 01:54:09
111
原创 基于Java-based的Spring源码解读(九)
接着上一篇,上一篇讲到了,调用工具类注册后置处理器,主要做一些初始化工作,如初始化比较器、自动注入解析器及在Spring IOC容器内部与用户无关的一些解析器等。今天分析下面这段代码private static BeanDefinitionHolder registerPostProcessor( BeanDefinitionRegistry registry, RootBeanDefinition definition, String beanName) { definition.s
2020-07-22 02:17:22
146
原创 基于Java-based的Spring源码解读(八)
接着上一篇,上一篇已经分析完了ConditionEvaluator的创建过程。接下来分析AnnotationConfigUtils.registerAnnotationConfigProcessors(this.registry);在AnnotatedBeanDefinitionReader读取器的构造函数内调用工具类,根据给定的registry注册所有注解相关的后置处理器。源码如下:public static Set<BeanDefinitionHolder> regis
2020-07-21 01:56:12
137
原创 基于Java-based的Spring源码解读(七)
经历了前几天晕头转向debug,现在终于找到阅读源码的感觉了,配合时序图阅读主线,不懂的细枝末节先跳过,废话不多说,进入今天的主题昨天分析到AnnotatedBeanDefinitionReader构造函数的初始化,代码如下public AnnotatedBeanDefinitionReader(BeanDefinitionRegistry registry, Environment environment) { Assert.notNull(registry, "BeanDefinitionR
2020-07-20 23:33:31
119
原创 基于Java-based的Spring源码解读(六)
接下来分析下AnnotatedBeanDefinitionReader的执行过程,即下面这段代码public AnnotationConfigApplicationContext() { this.reader = new AnnotatedBeanDefinitionReader(this); this.scanner = new ClassPathBeanDefinitionScanner(this);}时序图如下:获取Environment的逻辑如下:/** *
2020-07-20 01:09:46
134
原创 基于Java-based的Spring源码解读(五)
接着上一篇Spring源码解读(三)前两天实在读晕了,借鉴了郝佳的《Spring源码深度解读》的思路,配合UML类图、时序图等手段,帮助我们理解。容器时序图如下:时序图从AppConfigTest测试类开始,从时序图我们可以一目了然的看出ApplicationContext容器执行的处理逻辑。首先在测试类创建AnnotationConfigApplicationContext实例,并调用自身的构造函数,在该构造函数内分别实例化AnnotatedBeanDefinitionReader、Class
2020-07-19 23:59:23
134
原创 基于Java-based的Spring源码解读(四)
万事开头难,也许对像我这样阶段的coder,阅读Spring源码难度稍显大了一点,源码绕来绕去,很难从思想层面去理解Spring源码,这段代码为什么这么写。或许应该换一种思路,要是我来写应该怎么实现,跟大师的实现对比一下,也许可以帮助理解源码。今天先写一下心得。源码层面还没想好应该怎么写。...
2020-07-19 01:41:14
111
原创 基于Java-based的Spring源码解读(三)
说心里话,不读不知道,一读吓一跳,今天真是被绕晕了,真是山路十八弯,读源码真是一定要有个好的方法,最好配着UML工具,边读边做记录,不然真像我似的被绕晕。ApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);今天从这一行代码入手。我们知道new对象的时候会经过类的加载及初始化。先初始化AbstractApplicationContext,再初始化GenericApplicatio
2020-07-17 00:58:28
122
原创 基于Java-based的Spring源码解读(二)
上一篇文章介绍到了AnnotationConfigApplicationContext的类图,今天来分析下每个接口的功能及Spring构建该类图的一些思想及设计原则BeanFactory:Spring Bean容器的顶级接口,定义了获取Bean、判断是否单例、获取类型、获取别名等与Bean及其属性相关的方法。因此功能主要是获取Bean及其属性 MessageSource:用于解析消息的策略接口,支持此类消息的参数化和国际化。从给定的消息源解析并获取消息 ListableBeanFactory:Bea
2020-07-16 01:31:36
125
原创 基于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
209
原创 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
479
原创 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
376
原创 兴奋的起点
打开昨晚两点多写完发表的博文,没想到有十个观看,另外还收获到了一个关注。谢谢每一位观看的朋友,特别感谢那位点了关注的大佬。现在真的很兴奋,原本只是想找个地方记录自己学习的点点滴滴,给自己的梦想一个脚步,坚持走下去。现在又有了不一样的感受,感觉分享是这么一件令人快乐的事情,比当初的初恋还让人兴奋。同时也感受到了一种责任,我要对观看我的文章的人负责,要写出好的文章,让大家观看。然而我现在技术上还处在学习的阶段,也请大家阅读的时候多思考,大家一起共勉。接下来将分享spring源码系列,谢谢大家的关注。
2020-07-12 14:45:24
774
原创 入坑两年心路记载
第一次发博文,先简单的自我介绍下,本人09年本科毕业,山东人。如果单纯的从年龄上看,在IT行业已经算是个老人了,然而实际上才刚行两年。每天面对着那些年轻的小伙子,他们的朝气蓬勃,时刻也在激励着我,生活就应该向这些小伙子一样充满激情,然而在你想着美好的事情的时候,现实总会无情的给你一巴掌,网络充斥着IT年龄论的文章,让我这样大龄的IT人诚惶诚恐忐忑不安,我该沿着现在的路线走下去吗?也许很多人都会面临我今天这样的选择。当我们面临选择的时候应该怎么做,是继续迷茫下去,还是坚持心中的梦想,亦或者另谋出路。对
2020-07-12 02:23:04
1686
4
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人