博客
关于我
Spring源码 13 IOC refresh方法8
本文章基于 Spring 5.3.15 Spring IOC 的核心是 AbstractApplicationContext 的 refresh 方法。 其中一共有 13 个主要方法,这里分析第 8 个:initApplicationEventMulticaster。 1 AbstractApplicationContext 1-1 初始化应用消息广播器 initApplicationEventM......
阅读量:37194 次
2020-08-01 07:16:10
Spring源码 12 IOC refresh方法7
本文章基于 Spring 5.3.15 Spring IOC 的核心是 AbstractApplicationContext 的 refresh 方法。 其中一共有 13 个主要方法,这里分析第 7 个:initMessageSource。 1 AbstractApplicationContext 1-1 初始化 message 源 initMessageSource() protected vo......
阅读量:37194 次
2020-08-01 07:15:42
Spring源码 11 IOC refresh方法6
参考源 《Spring源码深度解析(第2版)》 版本 本文章基于 Spring 5.3.15 Spring IOC 的核心是 AbstractApplicationContext 的 refresh 方法。 其中一共有 13 个主要方法,这里分析第 6 个:registerBeanPostProcessors。 1 AbstractApplicationContext 1-1 注册 Bean 增强......
阅读量:37194 次
2020-08-01 07:15:14
Spring源码 10 IOC refresh方法5
本文章基于 Spring 5.3.15 Spring IOC 的核心是 AbstractApplicationContext 的 refresh 方法。 其中一共有 13 个主要方法,这里分析第 5 个:invokeBeanFactoryPostProcessors。 1 AbstractApplicationContext 1-1 执行 Bean 工厂的增强器 invokeBeanFactory......
阅读量:37194 次
2020-08-01 07:14:45
Spring源码 09 IOC refresh方法4
参考源 《Spring源码深度解析(第2版)》 版本 本文章基于 Spring 5.3.15 Spring IOC 的核心是 AbstractApplicationContext 的 refresh 方法。 其中一共有 13 个主要方法,这里分析第 4 个:postProcessBeanFactory。 1 AbstractApplicationContext 1-1 定义 Bean 工厂的增强器......
阅读量:37194 次
2020-08-01 07:14:17
Spring源码 08 IOC refresh方法3
参考源 《Spring源码深度解析(第2版)》 版本 本文章基于 Spring 5.3.15 Spring IOC 的核心是 AbstractApplicationContext 的 refresh 方法。 其中一共有 13 个主要方法,这里分析第 3 个:prepareBeanFactory。 1 AbstractApplicationContext 1-1 对 BeanFactory 进行功能......
阅读量:37194 次
2020-08-01 07:13:49
Spring源码 07 IOC refresh方法2
参考源 《Spring源码深度解析(第2版)》 版本 本文章基于 Spring 5.3.15 Spring IOC 的核心是 AbstractApplicationContext 的 refresh 方法。 其中一共有 13 个主要方法,这里分析第 2 个:obtainFreshBeanFactory。 1 AbstractApplicationContext 1-1 创建容器对象 obtainF......
阅读量:37194 次
2020-08-01 07:13:21
Spring源码 06 IOC refresh方法1
参考源 《Spring源码深度解析(第2版)》 版本 本文章基于 Spring 5.3.15 Spring IOC 的核心是 AbstractApplicationContext 的 refresh 方法。 其中一共有 13 个主要方法,这里分析第 1 个:prepareRefresh。 1 AbstractApplicationContext 1-1 刷新前的准备工作 prepareRefres......
阅读量:37194 次
2020-08-01 07:12:53
Spring源码 05 IOC 注解方式
参考源 《Spring源码深度解析(第2版)》 版本 本文章基于 Spring 5.3.15 Spring IOC 主要有两种实现方式:XML 和注解。 Spring 3.0 推出了注解注入,成为了现在的主流,也是官方推荐的。 这里分析注解方式。 AnnotationConfigApplicationContext(AppConfig.class) AppConfig package cn.sai......
阅读量:37194 次
2020-08-01 07:12:25
Spring源码 04 IOC XML方式
参考源 《Spring源码深度解析(第2版)》 版本 本文章基于 Spring 5.3.15 Spring IOC 主要有两种实现方式:XML 和注解。 这里分析 XML 方式。 ClassPathXmlApplicationContext("applicationContext.xml") 配置文件 首先看解析的对象:配置文件。 <?xml version="1.0" encoding="UTF......
阅读量:37194 次
2020-08-01 07:11:57
Spring源码 03 IOC原理
参考源 《Spring源码深度解析(第2版)》 版本 本文章基于 Spring 5.3.15 总流程 基本接口 IOC 容器两种实现方式:BeanFactory 和 ApplicationContext。 BeanFactory 容器的根接口,也是容器的入口。 Spring 内部使用的接口,不推荐开发人员使用。 加载配置文件的时候不会创建对象,在获取对象(使用)才去创建对象。 必须遵循完成的创建过......
阅读量:37194 次
2020-08-01 07:11:28
Spring源码 02 项目搭建
参考源 《Spring源码深度解析(第2版)》 版本 本文章基于 Spring 5.3.15 环境信息 JDK 17.0.2 Gradle 7.4 IntelliJ IDEA 2021.3.2 获取项目 GitHub 搜索 访问 GitHub 官网: 输入 spring 选择 spring-projects / spring-framework Spring 官网跳转 访问 Spring 官网: ......
阅读量:37194 次
2020-08-01 07:11:00
Spring源码 01 概述
参考源 《Spring源码深度解析(第2版)》 版本 本文章基于 Spring 5.3.15 简介 Spring 是开源的轻量级 J2EE 框架 我们常说的 Spring 实际上是指 Spring Framework,它是 Spring 家族中的一个重要分支。 官方文档 两大核心:IOC 和 AOP IOC Inversion of Control,控制反转,把创建对象的过程交给 Spring 进......
阅读量:37194 次
2020-08-01 07:10:32
spring源码
1.spring架构 由架构可以看出,spring核心是BeanFactory,可以比做现实生活中工厂。 我们看看一个工厂的大致工作流程: 工厂加工一个产品需要有图纸,图纸存放于档案库。 有了图纸,需要车间流水线,这个流水线能加工产品,就需要人、加工机器、水电气等等加工环境。 环境准备工作好了,就可以按照图纸加工产品了。 再来看看spring生产Bean的大致过程: 现实中的零件图纸,在sprin......
阅读量:37194 次
2020-08-01 07:10:04
spring源码
spring 准备阶段做了什么? 1设置容器启动时间 * 2设置标志位 * 3获取环境对象 验证属性资源 * 4存储预刷新监听器和 事件的集合对象 进入obtainFreshBeanFactory 设置beanFactory 是否允许覆盖 与否允许bean之间存在循环依赖 创建beanFactory 往里面设置xml中的属性值 初始化beanFact......
阅读量:37194 次
2020-08-01 07:09:36
spring源码
搭建环境 本次使用的源码Spring4.3.x,JDK8,gradle4.10.2,idea2018.2.5 Spring源码使用的是Gradle 进行构建的,所以需要下载 Gradle 以及搭建 java开发环境 Java环境使用的是 JDK1.8 Gradle版本4.10.2 spring-framework-4.3.x.zip 包:查看build.gradle文件 查询gradlew 有推荐......
阅读量:37194 次
2020-08-01 07:09:08
Spring添加线程池
在SpringBoot中,频繁创建线程比较消耗性能,所以采用线程池的形式 1、定义ThreadPoolTaskExecutor 2、在SpringBean方法上添加 @Async("serviceTask")注解即可 @EnableAsync @Configuration public class ThreadPoolConfig { @Bean("serviceTask") public Thr......
阅读量:37194 次
2020-08-01 07:08:39
Spring深度学习 — 高仿 Spring(MVC)
前言 上一篇通过简单的设计完成了 IOC 和 DI 的初始化工作,这一篇继续通过代码来体会 MVC 的设计思想。 一、初始化 MVC 九大组件 在mini 版的时候,我们知道 MVC 的九大组件是在 DispatcherServlet类中的 init()方法中进行初始化的,而且通过源码查看也看到了initStrategies方法,下面,我们来仿照着来写一下: /** * 通过 init方法来进行......
阅读量:37194 次
2020-08-01 07:08:11
Spring深度学习 — 高仿 Spring(IOC/DI)
前言 深度模仿 Spring 源码,完成 IOC \ DI 操作,较上一个版本,内容更加贴近 Spring,主要也是先学习设计思想,为后续学习源码做铺垫。通过简单易懂的代码学习思想,带着思想去理解 Spring,加深学习效果,更加容易吸收。 一、从 Servlet 到 ApplicationContext 在上一篇中,我们已经知道 SpringMVC 的入口是 DispatcherServlet,......
阅读量:37194 次
2020-08-01 07:07:43
Spring深度学习 — 关于 Spring
前言 作为一名Java 程序猿,相信对 Spring 都不陌生,那么我们经常使用的 Spring的发展史大家都了解过吗?它是如何来的?又是如何一步一步成长到了现在这种不可替代的重要地位?下面将对 Spring 进行一个整体认知和学习,对后面的深度学习起到铺垫作用。本文意在对知识点的温顾,如文中有写的不对的地方,还望不吝指教。 一、Spring 的发展史 相信经历过不使用框架开发 Web 项目的70......
阅读量:37194 次
2020-08-01 07:07:15