spring4源码分析与实战
文章平均质量分 93
学习spring4.x源码,通过修改和扩展源码深入了解sprring
程序员欣宸
微信公众号同名,畅游Java,与你同行~
展开
-
自定义spring boot starter三部曲之一:准备工作
从本章开始,一起实战一个自定义的spring boot starter,整个系列共三篇文章,内容如下:准备工作:了解基本感念、规划实战内容;实战开发:制作自定义starter,并在demo工程中使用它;深入分析:从spring和spring boot源码层面分析starter的原理;原文地址:https://blog.csdn.net/boling_cavalry/article/de...原创 2018-10-08 06:25:27 · 7267 阅读 · 2 评论 -
自定义spring boot starter三部曲之二:实战开发
本文是《自定义spring boot starter三部曲》的第二篇,上一篇中我们通过学习spring cloud的starter,对spring boot的starter有了初步了解,也设计好了实战内容,今天就来一起实现;...原创 2018-10-14 12:44:25 · 4757 阅读 · 5 评论 -
自定义spring boot starter三部曲之三:源码分析spring.factories加载过程
本文是《自定义spring boot starter三部曲》系列的终篇,前文中我们开发了一个starter并做了验证,发现关键点在于spring.factories的自动加载能力,让应用只要依赖starter的jar包即可,今天我们来分析Spring和Spring boot源码,了解spring.factories自动加载原理;版本情况本文中涉及到的库的版本:Spring boot :1....原创 2018-10-20 13:15:56 · 8447 阅读 · 5 评论 -
spring4.1.8扩展实战之八:Import注解
spring4.1.8扩展实战之八:Import注解原创 2018-09-10 12:53:57 · 4519 阅读 · 1 评论 -
ImportSelector与DeferredImportSelector的区别(spring4)
在使用@Import注解来注册bean的时候,Import注解的值可以是ImportSelector或者DeferredImportSelector的实现类,spring容器会实例化这个实现类,并执行其selectImports方法,那么问题来了:ImportSelector和DeferredImportSelector的区别在哪里,我们自定义Imort逻辑的时候该选择哪个呢?本文通过分析相关的s...原创 2018-09-09 15:59:44 · 11601 阅读 · 8 评论 -
spring4.1.8扩展实战之七:控制bean(BeanPostProcessor接口)
本章是《spring4.1.8扩展实战》的第七篇,我们来尝试在容器初始化的时候对bean实例做设置; 原文地址:https://blog.csdn.net/boling_cavalry/article/details/82250986控制bean的两种扩展方式两种方式可以对bean做控制(例如修改某个成员变量) 1. 改变bean的定义(BeanFactoryPostProcessor...原创 2018-09-02 19:00:20 · 5202 阅读 · 3 评论 -
spring4.1.8扩展实战之六:注册bean到spring容器(BeanDefinitionRegistryPostProcessor接口)
本章是《spring4.1.8扩展实战》系列的第六篇,目标是学习如何通过自己写代码的方式,向spring容器中注册bean;原文地址:https://blog.csdn.net/boling_cavalry/article/details/82193692关于注册bean到容器我们开发的类,如果想注册到spring容器,让spring来完成实例化,常用方式如下: 1. xml中通过b...原创 2018-08-30 19:12:03 · 20837 阅读 · 2 评论 -
spring4.1.8扩展实战之五:改变bean的定义(BeanFactoryPostProcessor接口)
本章我们继续实战spring的扩展能力,通过自定义BeanFactoryPostProcessor接口的实现类,来对控制bean实例做一些控制;原文地址:https://blog.csdn.net/boling_cavalry/article/details/82083889BeanFactoryPostProcessor接口简介spring容器初始化时,从资源中读取到bean的相...原创 2018-08-29 15:10:23 · 12678 阅读 · 3 评论 -
spring4.1.8扩展实战之四:感知spring容器变化(SmartLifecycle接口)
本章是《spring4.1.8扩展实战》的第四篇,如果业务上需要在spring容器启动和关闭的时候做一些操作,可以自定义SmartLifecycle接口的实现类来扩展,本章我们通过先分析再实战的方法,来掌握这种扩展方式;原文链接:https://blog.csdn.net/boling_cavalry/article/details/82051356往期扩展链接前面三章已经做了一些扩展...原创 2018-08-26 15:15:31 · 7763 阅读 · 5 评论 -
下载Spring4.1.x源码并用IntelliJ IDEA打开
在学习Spring的时想了解一些重要接口和类的源码,本文讲述了Spring工程的下载和在IDEA上打开的操作,共需要以下几步: 1. 安装JDK; 2. 安装gradle; 3. 下载spring源码; 4. 切换到4.1.x分支; 5. 用IntelliJ IDEA导入;接下来准备开始吧;原文地址:http://blog.csdn.net/boling_cavalry/arti...原创 2018-03-03 16:22:07 · 3987 阅读 · 1 评论 -
windows下修改、编译、构建spring-framework4.1.8.RELEASE源码
在《下载Spring4.1.x源码并用IntelliJ IDEA打开》一文中,我们将spring-framework源码在本地用ideal打开,今天来实战修改spring-framework源码,然后编译构建,最后用写一个demo工程来验证构建成功; 原文地址:https://blog.csdn.net/boling_cavalry/article/details/80791786 ...原创 2018-07-07 19:40:15 · 2210 阅读 · 0 评论 -
修改gradle脚本,加速spring4.1源码编译构建速度
本次优化的策略是跳过task来节省时间,例如文档包和源码包,因此,如果您的目标是拿到最新jar包,那么这种手段适合您,如果您想拿到包括文档、源码等在内的所有构建资源,那么这种方式就不适合了;原文地址:先列举一下软硬件环境信息: 1. 硬件:i5-8400,16G(DDR4-2667MHz),SSD128G 2. 操作系统:win10 64位 3. JDK:1.8.0_171 4. ...原创 2018-07-01 17:50:21 · 2287 阅读 · 0 评论 -
spring4.1.8初始化源码学习三部曲之一:AbstractApplicationContext构造方法
学习spring初始化过程是深入了解spring过程中重要的一步,今天我们就以一个简单的demo为例来学习spring初始化的源码;这个demo的源码可以在github下载,地址和链接信息如下表所示: 名称 链接 备注 项目主页 https://github.com/zq2599/blog_demos 该项目在GitHub上的主页 git仓库地址(...原创 2018-07-14 12:27:49 · 2532 阅读 · 4 评论 -
spring4.1.8初始化源码学习三部曲之二:setConfigLocations方法
本章是学习spring4.1.8初始化源码的第二篇,我们聚焦ClassPathXmlApplicationContext.setConfigLocations方法;原文地址:https://blog.csdn.net/boling_cavalry/article/details/80958832跟踪该方法,找到是在类AbstractRefreshableConfigApplication...原创 2018-07-14 12:29:43 · 4100 阅读 · 0 评论 -
spring4.1.8初始化源码学习三部曲之三:AbstractApplicationContext.refresh方法
本章是《spring4.1.8初始化源码学习三部曲》系列的终篇,重点是学习AbstractApplicationContext类的refresh()方法;原文地址:https://blog.csdn.net/boling_cavalry/article/details/81045637我们先回顾ClassPathXmlApplicationContext类的初始化过程如下代码:publ...原创 2018-08-06 19:38:33 · 6260 阅读 · 3 评论 -
spring4.1.8扩展实战之一:自定义环境变量验证
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I...原创 2018-08-12 14:32:44 · 6533 阅读 · 5 评论 -
SpringBoot应用使用自定义的ApplicationContext实现类
为什么要自定义application context在学习spring容器初始化的过程中,发现spring容器预留了一些扩展点,我们可以写子类来做功能扩展,例如AbstractApplicationContext类的initPropertySources、postProcessBeanFactory、onRefresh等方法都是空方法,留给子类来扩展用;在传统spring框架下的扩展方...原创 2018-08-11 18:04:09 · 23761 阅读 · 1 评论 -
spring的BeanFactory和ApplicationContext
BeanFactory接口在spring容器中,BeanFactory接口是IOC容器要实现的最基础的接口,定义了最基本的方法,例如获取bean实例、基本的判断等,如下图: ApplicationContext接口...原创 2018-08-12 12:02:25 · 10899 阅读 · 3 评论 -
spring4.1.8扩展实战之二:Aware接口揭秘
aware接口揭秘原创 2018-08-14 06:46:37 · 13079 阅读 · 13 评论 -
spring4.1.8扩展实战之三:广播与监听
提到广播与监听,我们常常会想到RabbitMQ、Kafka等消息中间件,这些常用于分布式系统中多个应用之间,有时候应用自身内部也有广播和监听的需求(例如某个核心数据发生变化后,有多个业务都希望立即被感知),这时候spring提供的基于ApplicationContext的广播与监听就派上用场了,接下来我们从原理到实践,来了解spring提供的这套机制吧。原文地址:https://blog.cs...原创 2018-08-16 19:23:11 · 4544 阅读 · 2 评论