
Spring 源码笔记
desmond_assis
给时光以生命,给岁月以积淀
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
1.开篇
背景 目标 章节规划 背景 工作6年了,Spring也用了5、6年,对其似乎总不是很了解。既然想一直在Java领域深耕,觉得有必要深入学习一下拥有持久生命力(目前仍在持续成长)的Spring,学习她的架构、编码方式,之前断断续续看过部分源码,期望这次更有系统性,更加深入。 目标 主要学习Spring的Ioc/Aop, 分为两部分,第一部分为用法拾遗,重点记录...原创 2018-09-11 20:53:52 · 138 阅读 · 0 评论 -
16.容器事件
文章目录16.容器事件1. 概念2. Spring事件类结构1. 事件类 `ApplicationEvent`2. 事件监听接口 `ApplicationListener`3. 事件广播 `ApplicationEventMulticaster`3. 实现示例 16.容器事件 1. 概念 Spring的ApplicationContext能够发布事件并且允许注册相应的事件监听器,因此,它拥有一套完...原创 2018-10-28 13:54:43 · 307 阅读 · 0 评论 -
17.内部工作机制
文章目录17.内部工作机制1. 概览图2. 说明 17.内部工作机制 1. 概览图 2. 说明 InstantiationStrategy 负责创建对象,策略模式,参见18.策略模式 BeanWrapper 相当于一个代理器,Spring委托BeanWrapper完成Bean属性的填充工作。在Bean实例被InstrantitationStrategy被创建出来之后,容器主控程序将B...原创 2018-10-28 20:31:20 · 258 阅读 · 0 评论 -
12.Bean使用拾遗(二)
文章目录12.Bean使用拾遗(二)1. Autowired/Resource/Inject2. Componet-scan3. DefaultListableBeanFactory动态添加Bean 12.Bean使用拾遗(二) 1. Autowired/Resource/Inject @Autowired byType, 有required属性 @Resource(Java Content d...原创 2018-10-25 21:18:44 · 151 阅读 · 0 评论 -
11.Bean使用拾遗(一)
文章目录11.Bean使用拾遗(一)1. 内部bean2. null值3.集合合并,允许子继承父同名集合属性合集4.lookup方法注入5.replace-method(方法替换)6. rquest & session作用域FactoryBean 11.Bean使用拾遗(一) 1. 内部bean <bean id="a" class="com.xxx"> <proper...原创 2018-10-24 22:26:07 · 224 阅读 · 0 评论 -
15.观察者模式&发布/订阅模式
文章目录15.观察者模式&发布/订阅模式1. 观察者模式1.概念&优缺点2.类图3.代码2.发布-订阅模式1.概念2. 两个模式最重要的区别3. 差异总结 15.观察者模式&发布/订阅模式 1. 观察者模式 1.概念&优缺点 概念 观察者模式: 1. 在对象之间定义了一对多的依赖,这样一来,当一个对象改变状态,依赖它的对象会收到通知并自动更新。 2....原创 2018-10-30 21:32:08 · 483 阅读 · 0 评论 -
21.配置文件读取以及验证(一)
文章目录Resource概述类图Bean加载获取Document类图寻找验证模式(DTD or XSD) Resource 概述 Resource抽象了所有Spring内部使用到的底层资源:File、URL、Classpath等。这接口定义了三个判断短浅资源状态的方法:exists, isReadable, isOpen. 类图 Bean加载 获取Document 类图 加载docum...原创 2018-11-10 16:44:00 · 299 阅读 · 0 评论 -
20.中场总结&开启源码阅读
文章目录总结目标章节规划 总结 从开启阅读源码计划来,已经实施了第一部分:用法拾亿。从2018.09.09开始,至今天(2018.11.04)结束,差不多花了两个月的时间。前后阅读了了三本Spring用法的数。两个月的时间,也不短。总共写了大概17篇阅读笔记吧。凡是业务系统,光看他的代码时看不大懂的,需要知道他的业务是什么,主线是是么,知道业务之后,在读代码就容易多了。Spring也如此,只不...原创 2018-11-10 16:45:59 · 185 阅读 · 0 评论 -
22.配置文件读取以及验证(二)
文章目录获取Document寻找文档DTD的定义(EntityResolver) 获取Document 寻找文档DTD的定义(EntityResolver) 在验证xml之前,需要找到这个xml的申明文件(DTD or XSD), 在 dtd/xsd + 验证模式的作用下,对xml进行验证. 此dtd/xsd, 通常声明为一网络地址,如果不指定EntityResolver, xml验证器会通过...原创 2018-11-13 20:02:57 · 277 阅读 · 0 评论 -
23.bean标签的解析及注册
文章目录1. Xml的解析概览1.1 xml解析1.2 xml解析(内)2. bean的解析2.1 默认标签2.2 自定义标签 1. Xml的解析概览 1.1 xml解析 1.2 xml解析(内) 2. bean的解析 2.1 默认标签 2.2 自定义标签 ...原创 2018-11-25 20:56:56 · 254 阅读 · 0 评论 -
24.再议循环依赖
文章目录1.概念回顾1. 概念2. scope为prototype3. scope为 singleton1. 构造器2. Setter2.解决之道3.探寻源码 1.概念回顾 1. 概念 1. 在本系列,《3.IOC容器》这章中,提到过循环依赖的概念: A 依赖 B, B 也依赖 A: public Class A { private B b; ...原创 2018-12-10 21:10:00 · 174 阅读 · 0 评论 -
14.国际化信息
文章目录14.国际化信息1. 数字格式化2. 日期格式化3. 消息格式化4. 资源化文件5. 动态资源文件4. Spring MessageSource-without Application5. Spring MessageSource-with Application 14.国际化信息 1. 数字格式化 public static void formatNum () { Loc...原创 2018-10-28 13:53:34 · 361 阅读 · 0 评论 -
2.知识点拾遗-轻量级容器和控制反转
POJO编程模型 原来的EJB编程模型存在的问题 POJO编程模型的优点 轻量级容器和控制反转 轻量级容器 控制反转 依赖注入 POJO编程模型 原来的EJB编程模型存在的问题 笨重,业务程序与EJB框架耦合严重,无法在JEE平台之外运行组件,开发-打包-部署-测试流程长且复杂。 POJO编程模型的优点 简单,轻量,无耦合 轻量级容器和...原创 2018-09-11 21:00:12 · 454 阅读 · 0 评论 -
3.IOC容器
ioc容器 三种配置方式 依赖注入 自定义属性解析器 循环依赖(构造器) 描述 解决 重写Bean定义 配置元素 基于Java配置 基于XML配置 容器级别 ioc容器 三种配置方式 XML:最基本,最完整、强大 注解(Annotation),@Sine 2.5 疑问:基于注解,怎么读取<context:component-scan base...原创 2018-09-13 04:45:53 · 351 阅读 · 0 评论 -
4.工厂模式
文章目录4.工厂模式简单工厂类图优缺点code输出工厂方法类图优缺点code输出抽象工厂类图优缺点code输出 4.工厂模式 简单工厂 类图 优缺点 优点 简单,解耦。 缺点 当需要扩充业务时,需要对BaoziFactory进行修改,当废弃某一产品时,也需要修改factory代码,产品过多,可能导致factory代码过长,冗余度高。 code package com.desmon...原创 2018-09-18 22:20:51 · 495 阅读 · 0 评论 -
5.Spring Bean生命周期.md
文章目录5.Spring Bean生命周期生命周期流程图说明总结 5.Spring Bean生命周期 生命周期流程图 说明 *调用InstantitationAwareBeanPostProcessor的postProcessBeforeInstantitation()方法 实例化:Class clazz, custructor或者 newInstance *调用用InstantitaonAw...原创 2018-09-23 20:41:30 · 241 阅读 · 0 评论 -
6.装配Bean
文章目录6.装配Bean装配方案通过自动化装配通过Java代码装配通过XML装配导入和混合装配 6.装配Bean 装配方案 基于xml 基于java 基于隐式地bean发现与自动装配 通过自动化装配 优点 便利,自动化,可以解决大部分问题 Spring从两个角度来实现自动转配 组件扫描(component scan) xml <context:component-sc...原创 2018-09-26 07:58:25 · 332 阅读 · 0 评论 -
7.高级装配(一)
文章目录7.高级装配(一)1. 环境与Profile1.解决不同环境不同配置2.配置方式2. 条件化bean1. 概念2. 举例 7.高级装配(一) 1. 环境与Profile 1.解决不同环境不同配置 maven构建时,使用profiles来确定将哪一个配置编译到可部署的应用 缺点:不同环境重新构建,可能引入bug 使用Spring profile 2.配置方式 Java 可以...原创 2018-10-11 21:49:28 · 330 阅读 · 0 评论 -
8.高级装配(二)
文章目录8.高级装配(二)3. 处理bean歧义性1. 使用首选bean2. 使用Qualifier限定符4. bean作用域5. 运行时注入 8.高级装配(二) 3. 处理bean歧义性 1. 使用首选bean 标识为primary的bean将被使用,如果有多个bean标识为primary,这仍会有冲突 Bean @Component @Primary public class Man ...原创 2018-10-13 21:15:55 · 185 阅读 · 0 评论 -
10.设计模式&OO原则概览
文章目录10.设计模式&amp;OO原则概览 10.设计模式&amp;OO原则概览 OO基本概念 抽象 封装 继承 多态 OO原则 封装变化 多用组合,少用继承 针对接口编程,不针对实现编程 为交互对象之间的松耦合而努力 设计原则 找出可能变化的代码,把他独立封装,不要和那些不需要变化的代码混在一起 针对接口编程,而不是针对实现编程 良好的OO设计必须具备三个特性: ...原创 2018-10-19 13:19:27 · 299 阅读 · 0 评论 -
13.Bean使用拾遗(三)
文章目录13.Bean使用拾遗(三) 13.Bean使用拾遗(三)原创 2018-10-28 13:51:21 · 135 阅读 · 0 评论 -
25.Bean加载过程
文章目录1.BeanFactory v.s. FactoryBean1.BeanFactory2. Bean加载过程 1.BeanFactory v.s. FactoryBean 1.BeanFactory BeanFactory, 即bean工厂,通常用于访问spring容器. FactoryBean,工厂模式,本身为一个bean,用于创建bean,以下是描述 /** * Interface ...原创 2018-12-10 21:32:13 · 281 阅读 · 0 评论