Spring 设计思想
深入源码学习Spring设计思想
jackcheng1117
Wake up everyday stronger than yesterday
展开
-
服务优雅停机
优雅停机什么是优雅停机 优雅停机指的是Java项目在停机时需要做好断后工作。如果直接使用kill -9 方式暴力的将项目停掉,可能会导致正常处理的请求、定时任务、RMI、注销注册中心等出现数据不一致问题。 如何解决优雅停机呢?大致需要解决如下问题:首先要确保不会再有新的请求进来,所以需要设置一个流量挡板保证正常处理已进来的请求线程,可以通过计数方式记录项目中的请求数量如果涉及到注册中心,则需要在第一步结束后注销注册中心停止项目中的定时任务停止线程池关闭其他需要关闭资源等等等原创 2020-10-30 11:03:20 · 3688 阅读 · 3 评论 -
《深入理解Spring原理》 06-Spring循环依赖问题探索
Spring循环依赖问题探索注:本文基于Spring4.3.11.RELEASE版本Debug注入Bean的大致流程:AbstractApplicationContext#refresh()方法最后一步 finishBeanFactoryInitialization 会对扫描到Bean进行实例化注入。该方法主要是遍历扫描的Bean然后调用 AbstractBeanFactory#getBea...原创 2020-04-28 18:10:13 · 210 阅读 · 0 评论 -
《深入理解Spring原理》 05-Spring AOP 底层实现详解
spring家族包含了很多不同领域的模块,spring-aop是开发者比较常用的一个模块,那么本节将基于源码debug方式一起学习spring-aop底层原理。 本文结构如下:扫描xml中配置的bean.将xml配置转为Bean Spring-aop拦截的Bean是如何注入到IOC的 Spring-aop执行流程如下图所示是需要使用到的简单案例,该案例主要功能是使用S...原创 2019-11-04 16:53:12 · 384 阅读 · 0 评论 -
《深入理解Spring原理》 04-Spring利用 “三级缓存” 解决循环依赖
03-IOC容器初始化之Bean注入详解 一文中详解分析了Spring是注入Bean的,以后的文章都会在该文的基础上进行知识面的扩展。废话不多说,本文的结构如下:Spring注入Bean的几种方式 什么是Bean的循环依赖 Spring “三级缓存” 源码方式分析Spring是如何利用 “三级缓存” 解决Bean的循环依赖Step1:Spring注入Bean的几种方...原创 2019-11-03 13:33:37 · 9212 阅读 · 1 评论 -
《深入理解Spring原理》 01-Spring前言
该文是《深入理解Spring原理》专栏的第一篇文章,主要介绍该专栏要学习的内容及Spring核心组件之间的关系。1. Spring组件如上图所示,上图展示了Spring家族各个领域的组件,大大小小也有十几个组件。这么多组件,把上图中所有的组件都翻一遍源码也不太现实,而且Spring本身的设计就是比较复杂的。所以本专栏会挑选常用和比较重要的组件进行学习和总结。Spr...原创 2019-09-26 14:14:20 · 449 阅读 · 0 评论 -
《深入理解Spring原理》 02-Bean定义详解
Spring前言中已经介绍了Bean组件在Spring中的重要性,本文将详细讲解Bean组件。 Bean组件在Spring中的实现无外乎 : Bean的定义、Bean的解析、Bean的创建 所以本文目录如下: Bean的定义 Bean的解析 Bean的创建 Bean组件设计精髓总结 Bean组件优秀编码学习...原创 2019-09-27 11:18:18 · 450 阅读 · 0 评论 -
《深入理解Spring原理》 03-IOC容器初始化之Bean注入详解
Spring可以轻松创建Java企业应用程序,它提供了在企业环境中使用Java语言所需的一切 。要使用Spring 必须要先构建 IOC容器,没有它Spring无法正常工作。本文将详细讲解Spring IOC 初始化机制及学习总结。 如下图所示: 定义了一个Person对象,和一个实现BeanPostProcessor接口的自定义类,本文将以此代码为基础来...原创 2019-11-03 22:37:04 · 971 阅读 · 0 评论