Spring源码

Spring源码阅读MethodInterceptor解析

目录 概述 MethodInterceptor 分析 AspectJAroundAdvice 分析 AspectJAfterThrowingAdvice 分析 AspectJAfterAdvice 分析 MethodBeforeAdviceInterceptor 分析 AfterReturnin »

设计模式之模板方法模式

在我们实际开发中,如果一个方法极其复杂时,如果我们将所有的逻辑写在一个方法中,那维护起来就很困难,要替换某些步骤时都要重新写,这样代码的扩展性就很差,当遇到这种情况就要考虑今天的主角——模板方法模式。 ... »

Spring源码分析容器启动流程

目录 前言 源码解析 1、初始化流程 流程分析 核心代码剖析 2、刷新流程 流程分析 核心代码剖析 前言 本文基于 Spring 的 5.1.6.RELEASE 版本 Spring的启动流程可以归纳为三个步骤: 1、初始化Spring容器,注册内置的BeanPostProc »

(WebFlux)003、多数据源R2dbc事务失效分析

一、背景 最近项目持续改造,然后把SpringMVC换成了SpringWebflux,然后把Mybatis换成了R2dbc。中间没有遇到什么问题,一切都那么的美滋滋,直到最近一个新需求的出现,打破了往日的宁静。 在对需求分析了一番后,需要引入新的数据源,那就是MongoDb。然后出现了MongoDb ... »

Spring源码学习笔记9——构造器注入及其循环依赖

Spring源码学习笔记9——构造器注入及其循环依赖 一丶前言 前面我们分析了spring基于字段的和基于set方法注入的原理,但是没有分析第二常用的注入方式(构造器注入)(第一常用字段注入),并且在循环依赖问题上构造器注入常被说spring无法解决构造器注入的循环依赖,下面我们来分析构造器注入和其 ... »

Spring源码窥探之:单实例Bean的创建过程

finishBeanFactoryInitialization(beanFactory);初始化剩下的所有的单实例(非懒加载)Bean(Instantiate all remaining (non-lazy-init) singletons.) 1. beanFactory.preInstantiateSingletons();初始化剩下的所有的单实例(非懒加载)Bean   1) 首先获取所有B »

spring源码分析---事务篇

  上一篇我介绍了spring事务的传播特性和隔离级别,以及事务定义的先关接口和类的关系。我们知晓了用TransactionTemplate(或者直接用底层P的latformTransactionManage---不推荐)进行事务管理方式,也就是Spring的编程式事务,这种方式使得业务代码和事务耦合度还是过高,spring推荐非入侵方式开发,所以它还有另外一种基于AOP的管理事务方式------ »

Spring源码分析(一)基本介绍

摘要:本文结合《Spring源码深度解析》来分析Spring 5.0.6版本的源代码。若有描述错误之处,欢迎指正。   作为一名开发人员,阅读源码是一个很好的学习方式。本文将结合《Spring源码深度解析》来分析Spring 5.0.6版本的源代码,若有描述错误之处,欢迎指正。 Spring是2003年兴起的一个轻量级Java开源框架,旨在解决企业应用开发的复杂性。Spring发展至今,衍生出 »

Spring源码分析(九)解析默认标签中的自定义标签元素

摘要:本文结合《Spring源码深度解析》来分析Spring 5.0.6版本的源代码。若有描述错误之处,欢迎指正。   到这里我们已经完成了分析默认标签的解析与提取过程,或许涉及的内容太多,我们已经忘了是从哪个函数开始了,我们再次回顾下默认标签解析函数的起始函数: /** * Process the given bean element, parsing the bean definitio »

spring源码学习之AOP(一)

  继续源码学习,看了spring中基础的容器和AOP感觉自己也没有什么长进,哈哈,我也不知道到底有用没有,这可能是培养自己的一种精神吧,不管那么多,继续学习!AOP中 AOP中几个重要的概念:(1)Advice--通知Advice定义在连接点做什么,为切面增强提供织入接口。在spring中,他主要描述spring AOP围绕方法调用而注入的切面行为。在spring AOP的实现中,使用了AOP联 »

spring源码分析(一)

以下分析基于spring-framework-5.0.x,关于源码可以自行去github上下载 java中描述对象的我们称为类class,spring 中描述对象的信息的包括元数据信息,注解信息的我们称为bean. 我们通过分析spring源码一步一步解析: 先发一个整体模型图 首先我们编写一个启动类:AnnotationConfigApplicationContext context = n »

深入理解springboot的自动注入

一、开篇 在平时的开发过程中用的最多的莫属springboot了,都知道springboot中有自动注入的功能,在面试过程中也会问到自动注入,你知道自动注入是怎么回事吗,springboot是如何做到自动注入的,自动注入背后的原理是什么,今天来分析下springboot的自动注入,希望这篇文章可以解 ... »

spring源码学习笔记之BeanDefinition接口

package org.springframework.beans.factory.config; import org.springframework.beans.BeanMetadataElement; import org.springframework.beans.MutablePropertyValues; import org.springframework.core.Attribu »

spring源码分析之spring-web remoting模块概况及基本概念

spring-web总体分为三部分:caucho、httpinvoker、jaxws,其总体构造图如下: uml结构:   先看看网上搜索到的上述实现的原理吧:Spring RMI,Hessian/Burlap,HttpInvoker的区别 http://blog.csdn.net/arkblue/article/details/6253112 1 Hessian/Burlap 方式      »

Gradle编译Spring源码

    使用工具:JDK1.8.0_11、Gradle4.9、idea2018.1.3   1. 配置Gradle   Gradle下载地址:https://gradle.org/releases/   在下载页找到自己需要的版本,点击“binary-only”,只下载运行包。   注意:不建议下载比较新的gradle版本,可能使用时会有各种冲突,我选择的是v4.9。     下载后的压缩包:g »

Spring源码解析之Configuration注解

1、Spring有一个内部的BeanFactoryPostProcessor:   org.springframework.context.annotation.internalConfigurationAnnotationProcessor (id)     --------->   ConfigurationClassPostProcessor(实现类)       ---------& »