spring源码学习
文章平均质量分 96
AvengerEug
向技术致敬的码农
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Spring 事务的独门绝技:钩子函数的使用技巧
前言经过前面对Spring AOP、事务的总结,我们已经对它们有了一个比较感性的认知了。今天,我继续安利一个独门绝技:Spring 事务的钩子函数。单纯的讲技术可能比较枯燥乏味。接下来,我将以一个实际的案例来描述Spring事务钩子函数的正确使用姿势。一、案例背景拿支付系统相关的业务来举例。在支付系统中,我们需要记录每个账户的资金流水(记录用户A因为哪个操作扣了钱,因为哪个操作加了钱),这样我们才能对每个账户的账做到心中有数,对于支付系统而言,资金流水的数据可谓是最重要的。因此,为了防止支付系原创 2021-07-14 08:42:09 · 2239 阅读 · 1 评论 -
Spring 事务原理篇:@EnableTransactionManagement注解底层原理分析技巧,就算你看不懂源码,也要学会这个技巧!
前言学习了关于Spring AOP原理以及事务的基础知识后,今天咱们来聊聊Spring在底层是如何操作事务的。如果阅读到此文章,并且对Spring AOP原理不太了解的话,建议先阅读下本人的这篇文章:Spring AOP原理篇:我用上我的洪荒之力来帮你彻底了解aop注解@EnableAspectJAutoProxy的原理的文章,后文的内容与这篇文章有很大的关联关系。一、先说说@EnableTransactionManagement注解内部有哪些方法我们看下@EnableTransactionM原创 2021-07-08 22:43:41 · 1955 阅读 · 6 评论 -
Spring事务使用篇:学习spring事务传播机制的7种姿势
前言在上篇spring aop原理篇:我用上我的洪荒之力来帮你彻底了解aop注解@EnableAspectJAutoProxy的原理的文章中,我们熟悉了Spring如何找到切面、如何找到通知、如何生成代理对象以及代理对象的执行顺序。现在,我们再来学习下Spring事务相关的知识点,这篇文章比较简单,适合入门,主要来学习下如何使用Spring的事务以及相关传播机制的特性。一、以测试用例的方式认识Spring的事务机制案例背景:以支付系统的转账业务为例,我们的转账业务一定是一个原子性的操作。A向B转原创 2021-07-02 23:46:15 · 375 阅读 · 1 评论 -
Spring AOP原理篇:我用上我的洪荒之力来帮你彻底了解aop注解@EnableAspectJAutoProxy的原理
前言在上篇文章spring aop使用篇:熟悉使用前置通知、后置通知、返回通知、异常通知,并了解其特性中我们知道了如何使用aop以及其的一些特性,同时还提出来如下所述的疑问点:1、源码中是如何将我们定义的各种通知与目标方法绑定起来的2、aop代理对象生成的策略3、我们的aop代理对象的执行顺序是怎样的接下来,我们继续以上篇文章的测试案例为例,从源码的角度来分析这三个点。废话不多说,直接开干!一、源码中是如何将我们定义的各种通知与目标方法绑定起来的如果让各位自己来实现aop你会采用原创 2021-06-28 13:58:44 · 906 阅读 · 1 评论 -
Spring AOP使用篇:熟悉使用前置通知、后置通知、返回通知、异常通知,并了解其相关特性
前言本次将会总结5篇关于spring aop的知识点,主要围绕:AOP使用篇、AOP原理篇、事务使用篇、事务原理篇、事务同步器使用篇 五个主题进行阐述。AOP原理篇分为两个主题:1、源码中是如何将我们定义的各种通知与目标方法绑定起来的2、我们的aop代理对象的执行顺序是怎样的事务原理篇主要是以一个事务传播机制的案例来讲解spring事务在底层的执行过程而本次总结的核心为:如何使用Spring AOP,以及了解相关通知的特性(相关的概念在这就不再累述了,大家可以参考其他文章),废原创 2021-06-20 22:24:16 · 3019 阅读 · 9 评论 -
都0202年了还在说spring@Autowired是byType注入的?
前言基于上篇文章从源码的角度查找Spring @Autowired注解不能依赖注入静态变量的原因的启发,我觉得还有必要再总结下spring中@Autowired注解的原理。本人在未读spring源码时一直认为@Autowired的依赖注入模式是byType,直到我看了源码我才打破了这个误区!一、Spring依赖注入类型的基础知识在上篇博客中也有提到,spring的依赖注入主要包含如下...原创 2020-05-06 18:42:01 · 1352 阅读 · 0 评论 -
从源码的角度查找Spring @Autowired注解不能依赖注入静态变量的原因
前言本文将总结下Spring依赖注入静态属性失败的原理以及如何解决依赖注入静态属性一、测试项目AppConfig.java@Configuration@ComponentScan("com.eugene.sumarry.csdn.autowiredstatic")public class AppConfig {}UserDao.java@Repositorypublic ...原创 2020-05-01 08:57:55 · 748 阅读 · 0 评论 -
spring 5.0.x源码学习系列十: 观察者设计模式与Spring 事件驱动模型
前言上篇博客spring 5.0.x源码学习系列九: FactoryBean和BeanFactory主要介绍了spring中的两个特殊的bean, FactoryBean和BeanFactory。本次,咱们将开始介绍下spring的事件驱动模型以及它使用的设计模式: 观察者设计模式。一、观察者模式1.1 根据一个案例实现一个观察者设计模式假设有这么一个场景,小黄和小杨一起在看电影,当...原创 2020-02-10 18:52:42 · 411 阅读 · 0 评论 -
spring 5.0.x源码学习系列九: FactoryBean和BeanFactory
前言上篇博客spring 5.0.x源码学习系列八: 实例化bean之使用构造方法创建bean、自动装配与循环依赖主要介绍了Spring bean的实例化过程,包括自动装配和依赖注入。其中有提到FactoryBean这个字眼,FactoryBean是一种特殊的bean,它可以维护两个bean并都交由spring管理。但BeanFactory它并不是一个bean,是一个普通对象,通过new关键字...原创 2020-01-22 13:20:22 · 405 阅读 · 0 评论 -
spring 5.0.x源码学习系列八: 实例化bean之使用构造方法创建bean、自动装配与循环依赖
前言上篇博客spring 5.0.x源码学习系列七: 后置处理器ConfigurationClassPostProcessor之BeanFactoryPostProcessor身份主要介绍了ConfigurationClassPostProcessor的BeanFactoryPostProcessor身份。接下来,将进入spring最核心的bean实例化过程总结。一、...原创 2020-01-21 19:21:08 · 472 阅读 · 0 评论 -
spring 5.0.x源码学习系列七: 后置处理器ConfigurationClassPostProcessor之BeanFactoryPostProcessor身份
前言上篇博客spring 5.0.x源码学习系列六: 后置处理器ConfigurationClassPostProcessor之BeanDefinitionRegistryPostProcessor身份主要介绍了ConfigurationClassPostProcessor的BeanDefinitionRegistryPostProcessor身份, 为了精通spring, 我们还需要对它的第...原创 2020-01-14 19:06:07 · 393 阅读 · 0 评论 -
spring 5.0.x源码学习系列六: 后置处理器ConfigurationClassPostProcessor之BeanDefinitionRegistryPostProcessor身份
前言上篇博客spring 5.0.x源码学习系列五: AnnotationConfigApplicationContext类refresh方法之invokeBeanFactoryPostProcessor(一)主要解释的是invokeBeanFactoryPostProcessor方法的大致执行流程, 为了精通spring, 咱们除了要了解后置处理器的执行顺序外,还得明白这其中的一个特殊后置处...原创 2020-01-08 20:06:50 · 730 阅读 · 0 评论 -
spring 5.0.x源码学习系列五: AnnotationConfigApplicationContext类refresh方法之invokeBeanFactoryPostProcessor(一)
前言一、源码黑箱理论在此篇章中,先把源码中每个方法的执行流程先列出来, 再根据每一个具体的方法进行解析源码 @Override public void refresh() throws BeansException, IllegalStateException { synchronized (this.startupShutdownMonitor) { ...原创 2020-01-03 19:15:03 · 746 阅读 · 2 评论 -
spring 5.0.x源码学习系列四: AnnotationConfigApplicationContext类register方法作用
前言上篇博客spring 5.0.x源码学习系列三: AnnotationConfigApplicationContext类的无参构造方法的作用介绍了AnnotationConfigApplicationContext类无参构造方法的作用, 再次回顾下主要有如下几个作用:初始化spring bean工厂DefaultListableBeanFactory通过AnnotatedBeanDef...原创 2019-12-23 22:43:35 · 659 阅读 · 0 评论 -
spring 5.0.x源码学习系列三: AnnotationConfigApplicationContext类的无参构造方法的作用
关于正式内容之前想说的话后续的所有文章将开始围绕上篇博客:spring 5.0.x源码学习系列二: 从AnnotationConfigApplicationContext开始,进入spring世界的运行流程图展开, 并根据实际的代码来详细解析。接下来开始进入正文一、AnnotationConfigApplicationContext的无参构造方法上篇博客(上面有链接, 可以自行查看)中,大致...原创 2019-12-21 18:23:43 · 588 阅读 · 0 评论 -
spring 5.0.x源码学习系列二: 从AnnotationConfigApplicationContext开始,进入spring世界
揭秘AnnotationConfigApplicationContext类的神秘面纱一、运行大致流程图## 二、解析2.1 无参构造方法AnnotationConfigApplicationContext无参构造方法 public AnnotationConfigApplicationContext() { // 在执行此行代码之前, 先执行了父类的构造方法 // 此段代码做的...原创 2019-12-17 11:29:12 · 631 阅读 · 0 评论 -
spring 5.0.x源码学习系列一: 构建spring源码
spring 5.0.x源码学习系列之构建spring源码一、环境准备Spring 5.0.x源码下载: git clone https://github.com/spring-projects/spring-framework.git -b 5.0.xIntelliJ IDEAGradle 4.4.1(建议使用4.x版本, 5+以上的版本可能会有问题), 不需要下载gradle源码,...原创 2019-12-13 22:24:40 · 754 阅读 · 2 评论
分享