![](https://img-blog.csdnimg.cn/20210629145359255.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
《升职加薪之Spring源码深度剖析》
文章平均质量分 95
深入源码,剖析Spring底层原理,高工架构师必经之路
墨家巨子@俏如来
EasyJF开源团队成员,10 年Java开发及项目管理经验,在企业中承担项目经理、架构师等职位,喜欢研究技术,执着于对技术底层的探索及源码的剖析;喜欢写文章,享有阿里云专家博主、CSDN博客专家、Java领域优质创作者、华为云开发者联盟成员/技术博主(CSDN搜索-墨家巨子@俏如来)代表作《SpringCloud入门到精通》,《SpringCloud源码深度剖析》,《SpringBoot入门到精通》,《Spring源码深度剖析》等等
展开
-
Spring源码剖析-Transactional 事务执行流程
前言上一篇《Transactional源码解析》我们介绍了Spring对Transactional的解析,也就是事务的初始化工作,这一篇我们接着来分析事务的执行流程。事务拦截器:TransactionInterceptorTransactionInterceptor是事务拦截器,该类实现了TransactionAspectSupport , TransactionAspectSupport 中持有 TransactionManager ,拥有处理事务的能力。同时该类还实现了 MethodInterce原创 2021-07-05 23:20:48 · 1597 阅读 · 3 评论 -
Spring源码剖析-事务源码之@Transactionl解析
前言在上一章我们分析了Spring的AOP的源码,本篇文章是对事务的源码分析,我们都知道事务的管理是基于AOP实现的,所以有了上一篇的铺垫这一章会比较简单一点。事务配置案例配置事务管理器,开启注解事务支持 <!-- 开启事务支持 --> <tx:annotation-driven/> <!-- 事务管理器 --> <bean id="transactionManager" class="org.springframework原创 2021-07-02 14:22:47 · 2272 阅读 · 15 评论 -
Spring源码剖析-拜托面试官别再问我AOP原理了
前言IOC/DI , AOP 是Spring最重要的两个特性 ,也是面试高频被问到的部分,前面我们已经分析了Spring的IOC相关源码以及DI依赖注入相关源码,从本篇文章开始我们着手分析Spring的AOP源码 。AOP的理解AOP基本概念AOP是为面向切面编程,为什么要面向切面,何为切面?我们知道对于OOP面向对象而言在某些开发场景中是有一定不足,由于面向对象的思想是纵向的,它面对的是一个一个的对象,当我们需要在多个类中引入同一个公共的业务时(比如:事务,操作日志等),那么在每个类中都要引入公共原创 2021-06-21 18:45:03 · 3392 阅读 · 9 评论 -
Spring源码剖析-Autowired自动注入原理
前言这篇文章接上一篇文章属性注入讲一讲 @Autowired 注解的实现源码,这个也是面试被问的比较多的。Bean的后置处理器BeanPostProcessor 通常被叫做Bean的后置处理器,是Spring提供给我们的扩展接口,它允许我们在Bean调用初始化方法前,后对 Bean 做一些扩展逻辑。BeanPostProcessor提供了postProcessBeforeInitialization 前置处理和postProcessAfterInitialization后置处理 两个方法,我们可以实现原创 2021-06-18 10:20:49 · 2811 阅读 · 10 评论 -
Spring源码剖析-Spring如何处理循环依赖
前言你是不是被这个骚气的标题吸引进来的,_ 喜欢我的文章的话就给个好评吧,你的肯定是我坚持写作最大的动力,来吧兄弟们,给我一点动力Spring如何处理循环依赖?这是最近较为频繁被问到的一个面试题,在前面Bean实例化流程中,对属性注入一文多多少少对循环依赖有过介绍,这篇文章详细讲一下Spring中的循环依赖的处理方案。什么是循环依赖依赖指的是Bean与Bean之间的依赖关系,循环依赖指的是两个或者多个Bean相互依赖,如:构造器循环依赖代码示例:public class BeanA {原创 2021-06-13 22:47:23 · 6005 阅读 · 49 评论 -
Spring源码剖析-Bean的实例化-属性注入
前言这一章节我们来讨论创建Bean过程中的属性注入,在Spring的IOC容器启动过程中,会把定义的Bean封装成BeanDefinition注册到一个ConcurrentHashMap中,然后对单利的lazy-init=false 的Bean并进行实例化。创建Bean的代码在 AbstractAutowireCapableBeanFactory#doCreateBean 中,当Bean创建成功之后,会调用AbstractAutowireCapableBeanFactory#populateBean 方原创 2021-06-12 08:45:19 · 1282 阅读 · 10 评论 -
Spring源码剖析-单利Bean的实例化(六)
前言前面系列章节我们分析了Spring的IOC的启动流程,包括:容器创建,配置加载,配置解析,Bean注册等几个阶段,所以Bean注册其实就是把Bean的相关属性,依赖关系等封装成BeanDeafinition对象,然后注册到一个ConcurrentHashMap中。要注意的是这个BeanDeafinition只是对Bean的一个定义封装而已,并不是真正的Bean的实例,那Bean的实例是在什么时候创建的?有三种情况如果是单利Bean,且lazy-init=false 急切初始(即时,立即,迫切,饥饿原创 2021-06-05 13:48:03 · 989 阅读 · 8 评论 -
Spring源码剖析-基于注解的IOC启动流程(五)
前言在上一篇文章我们分析了一下基于注解的IOC启动流程的第一种方式,根据指定的BeanClass启动,这篇文章我们分析另外一种方式,扫描一个包来启动。IOC案例我这里还是使用 AnnotationConfigApplicationContext 写一个简单的IOC案例第一步:创建一个类//通过扫描方式注册Bean@Componentpublic class OtherBean {}第二步:使用 AnnotationConfigApplicationContext 扫描一个包publi原创 2021-06-03 23:42:58 · 814 阅读 · 8 评论 -
Spring源码剖析-基于注解的IOC启动流程(四)
前言前面章节我们已经分析了XML配置的IOC的启动流程,这章节来分析一下基于注解配置的IOC启动流程,有了前面的铺垫,这章分析起来将会比较简单。Spring的注解编程相信比较老的程序员是体验过使用Spring的xml配置来开发项目,大量繁杂复杂的配置增加了开发的繁琐性。Spring在 2.0 以后就引入了注解编程来代替复杂成XML配置-即JavaConfig,Spring框架内部也是大量使用注解代替XML配置,对于新的程序员可能都是直接使用SpringBoot开发项目,SpringBoot本身就是基于原创 2021-06-03 14:58:44 · 1088 阅读 · 5 评论 -
Spring源码剖析-IOC启动流程(三)
XmlBeanDefinitionReader通过DocumentLoader.loadDocument 把InputSource(XML配置文件)解析成Document之后,调用registerBeanDefinitions方法解析和注册Bean , 见:DefaultDocumentLoader#loadDocument 加载文档方法//XML解析成Document,调用documentLoader.loadDocument完成protected Document doLoadDocument(In原创 2021-06-02 20:00:59 · 1490 阅读 · 11 评论 -
汇总汇总-Spring&Cloud&Alibaba&源码剖析&分布式锁/事务-从入门到进阶到源码-学完保证吊打面试官
Spring全家桶 , 把我的文章看完保证你吊打面试官 , 喜欢就收藏,顺便给个好评,你的肯定是我最大的动力《Spring源码剖析》一.Spring源码剖析-Spring核心类认识二.Spring源码剖析-Spring IOC启动流程-----------------------------------------持续更新-------------------------------------------------《Spring Cloud 极简入门》适用人群:有Spring Boot基础的原创 2021-06-01 17:39:36 · 4446 阅读 · 10 评论 -
Spring源码剖析-IOC启动流程(二)
前言上一章节我们讲的是Spirng中的一些核心类,包括IOC容器工厂,和配置解析的一些类,这一章主要是跟一下IOC启动流程。ClasspathXmlApplicationContext源码分析入口从 ClasspathXmlApplicationContext 开始,通过它来加载一个配置//加载Spring配置文件,拿到Spring容器ApplicationContext context = new ClassPathXmlApplicationContext("配置文件.xml")//从容器原创 2021-06-01 17:19:25 · 2456 阅读 · 4 评论 -
Spring源码剖析-Spring核心类认识(一)
简介相信每个Java程序员或多或少都使用过Spring这个框架,Spring不仅作用于服务器端的开发,从简单性、可测试性和松耦合性角度而言,绝大部分Java应用都可以从Spring中受益。如今的Spring全家桶已经是风靡全球,深受广大程序员的喜爱,可以说Java火了这么多年Spring起到了很大的作用,在国内一个Java程序员如果说没有用过Spring那是很难找到工作的 。而一个技术大牛,技术经理,或者架构师的成长都离不开对框架源码的窥探,所以本篇文章就带你一步一步由浅入深一窥Spring背后的密码。原创 2021-06-01 17:17:47 · 8314 阅读 · 28 评论