Spring源码
文章平均质量分 69
Spring 源码相关知识
天航星
天为涯,航为途,星为岸。
展开
-
Spring源码 01 概述
Spring 是开源的轻量级 J2EE框架我们常说的Spring实际上是指,它是 Spring 家族中的一个重要分支。官方文档两大核心:IOC 和 AOP。原创 2022-02-26 17:59:00 · 94 阅读 · 0 评论 -
Spring源码 02 项目搭建
参考源《Spring源码深度解析(第2版)》版本本文章基于。原创 2022-02-26 17:59:00 · 356 阅读 · 0 评论 -
Spring源码 03 IOC原理
参考源《Spring源码深度解析(第2版)》版本本文章基于。原创 2022-02-26 18:00:00 · 60 阅读 · 0 评论 -
Spring源码 04 IOC XML方式
进入的构造方法,会先进入的静态代码块。static {/*** 优先加载上下文关闭事件来防止奇怪的类加载问题* WebLogic 8.1 在应用程序关闭的时候出现的 BUG*/这里是针对的特殊处理,与主体逻辑不关,不用过于关注。this()// 创建资源模式处理器if (parent!= null)由于parent没有传,执行结束。= null) {i++) {// 解析给定路径else {// 创建属性解析器。原创 2022-02-26 18:01:00 · 93 阅读 · 0 评论 -
Spring源码 05 IOC 注解方式
进入的构造方法,会先进入的静态代码块。static {/*** 优先加载上下文关闭事件来防止奇怪的类加载问题* WebLogic 8.1 在应用程序关闭的时候出现的 BUG*/这里是针对的特殊处理,与主体逻辑不关,不用过于关注。// 使用 beanName 做唯一标识注册// 注册 Bean 定义信息// 注册所有的别名= null) {// 同步监视器/*1 准备刷新的上下文环境。例如对系统属性或者环境变量进行准备及验证设置容器的启动时间设置关闭状态为 false。原创 2022-03-31 18:03:00 · 169 阅读 · 0 评论 -
Spring源码 06 IOC refresh方法1
*** 1 刷新前的准备工作* 设置容器的启动时间* 设置关闭状态为 false* 设置活跃状态为 true* 获取 Environment 对象,并加载当前系统的属性值到 Environment 对象中并进行验证* 准备监听器和事件的集合对象,默认为空的集合*/// 设置容器启动时间// 容器的关闭标志位// 容器的激活标志位// 记录日志else {// 留给子类覆盖,初始化属性资源// 获取环境对象// 验证需要的属性文件是否都已经放入环境中。原创 2022-03-01 16:39:00 · 73 阅读 · 0 评论 -
Spring源码 07 IOC refresh方法2
/ 初始化 BeanFactory,并进行 XML 文件读取,将得到的 BeanFactory 记录在当前实体的属性中// 返回当前实体的 beanFactory 属性// 如果存在 beanFactory// 销毁 Bean// 关闭 Bean 工厂try {// 创建内部的 Bean 工厂// 指定序列化 ID,可以从 ID 反序列化到 BeanFactory 对象// 定制 BeanFactory,设置相关属性,包括是否允许覆盖同名称的不同定义的对象以及循环依赖。原创 2022-03-14 13:56:00 · 294 阅读 · 0 评论 -
Spring源码 08 IOC refresh方法3
/ 设置 beanFactory 的 classLoader 为当前 context 的 classLoaderif (!/*** 设置bean Factory 的表达式语言处理桥, Spring3 增加了表达式语言的支持* 默认可以使用 #{bean.xxx} 的形式来调用相关属性值*/// 为 beanFactory 增加了一个默认的 propertyEditor,这个主要是对 bean 的属性等设置管理的一个工具// 添加 Bean 增强器// 设置忽略自动装配的接口。原创 2022-03-14 13:56:00 · 57 阅读 · 0 评论 -
Spring源码 09 IOC refresh方法4
这里为空,供扩展使用。在 SpringMVC 中针对这一块做了扩展。原创 2022-03-14 13:57:00 · 58 阅读 · 0 评论 -
Spring源码 10 IOC refresh方法5
/ 获取 Bean工厂 增强器// 执行 Bean工厂 增强器if (!// 判断 Bean 是否有资格进行元数据缓存if (!});原创 2022-03-14 13:57:00 · 63 阅读 · 0 评论 -
Spring源码 11 IOC refresh方法6
/ 注册 Bean 增强器。原创 2022-03-14 13:58:00 · 59 阅读 · 0 评论 -
Spring源码 12 IOC refresh方法7
/ 获取 Bean 工厂// 如果在配置中已经配置了 messageSource,那么将 messageSource 提取并记录在 this.messageSource 中} else {// 如果用户并没有定义配置文件,那么使用临时的 DelegatingMessageSource 以便于作为调用 getMessage 方法的返回// 注册单例由于 beanFactory 已经被赋值,直接返回。原创 2022-03-14 13:58:00 · 238 阅读 · 0 评论 -
Spring源码 13 IOC refresh方法8
/ 获取 Bean 工厂else {// 定义应用事件多播器// 注册单例获取 Bean 工厂和注册单例在前面已经分析过,这里不再分析。原创 2022-03-14 13:58:00 · 56 阅读 · 0 评论 -
Spring源码 14 IOC refresh方法9
这里为空,留给子类扩展。可以重写以添加特定的刷新方法,在单例实例化之前调用特殊 bean 的初始化。原创 2022-03-14 13:59:00 · 66 阅读 · 0 评论 -
Spring源码 15 IOC refresh方法10
/ 获取应用程序监听器。硬编码方法注册的监听器处理// 获取应用程序事件多播器// 配置文件注册的监听器处理// 获取应用程序事件多播器if (!// 多播事件if (mbd!= null &&!return mbd;// 获取合并的 Bean 定义信息// 获取合并的 Bean 定义信息} else {} else {try {// 转换 Bean 名称if (!// 获取合并的 Bean 定义信息} else {原创 2022-03-14 14:00:00 · 261 阅读 · 0 评论 -
Spring源码 16 IOC refresh方法11
if (!// 冻结所有的 bean 定义,说明注册的 bean 定义将不被修改或任何进一步的处理// 初始化剩下的单实例(非惰性的)原创 2022-03-14 14:00:00 · 101 阅读 · 0 评论 -
Spring源码 17 IOC refresh方法12
/ 清除资源缓存// 初始化生命周期处理器// 获取生命周期处理器// 刷新生命周期处理器// 发布事件if (!} else {} else {= null) {} else {// 获取应用程序事件多播器// 多播事件= null) {} else {原创 2022-03-14 14:00:00 · 86 阅读 · 0 评论 -
Spring源码 18 IOC refresh方法13
/ 清空反射缓存// 清空注解缓存// 清空并发缓存// 清空类加载器// 清空类型映射缓存// 清空注解扫描缓存。原创 2022-03-14 14:01:00 · 231 阅读 · 0 评论 -
Spring源码 19 IOC getBean
/ 断言 Bean 工厂活动// 获取 Bean 工厂// 获取 Bean由于前面定义了,这里直接返回。原创 2022-03-14 14:02:00 · 174 阅读 · 0 评论 -
Spring源码 20 手写模拟
*** 类型*//*** 范围*/原创 2022-03-31 23:19:00 · 30 阅读 · 0 评论 -
Spring源码 21 Bean生命周期
参考源《Spring源码深度解析(第2版)》版本本文章基于Bean 的生命周期示意图(存在循环依赖和 AOP)原创 2022-03-31 23:19:00 · 253 阅读 · 6 评论