前言
先说一下本人状况吧,末流985毕业,毕业以后一直在一家不大不小的公司里安稳上班。上半年由于疫情的缘由公司调整了工资,我也是随波逐流跟随你们辞了职。辞职以后向阿里。字节这些都投了简历(可是只收到了阿里的回复)。一路竟然惊险但也是成功斩下offer,问的都是最近两年新出的面试频度较高的面试题!,如今我把我所学的分享给你们!程序员
做为一名Java方向的程序员,在面试大厂的时候,其实关于spring这一块是问的很是多的,尤为是源码这一块,几乎是逢面试必问,虽说如今技术更新比较快,可是掌握好spring以及它的源码绝对是你面试的一个杀手锏。如下这份文档就包括了spring从基础到源码主要涉及到的内容有以下面试
- Spring框架功能总体介绍
- Spring IOC容器底层注解使用
- Spring Ioc容器源码解析
- Spring 是如何解决循环依赖的
- Spring Aop源码分析
- spring 事务源码解析
首先跟你们说一下就是我碰到的面试题,关于spring循环依赖的spring
什么是循环依赖?
循环依赖其实就是循环引用,也就是两个或者两个以上的bean互相持有对方,最终造成闭环。好比A依赖于B,B依赖于C,C又依赖于A。以下图:架构

注意,这里不是函数的循环调用,是对象的相互依赖关系。循环调用其实就是一个死循环,除非有终结条件。框架
Spring中循环依赖场景有: 运维
(1)构造器的循环依赖 ide
(2)field属性的循环依赖函数
其中,构造器的循环依赖问题没法解决,只能拋出BeanCurrentlyInCreationException异常,在解决属性循环依赖时,spring采用的是提早暴露对象的方法。源码分析
Spring怎么解决循环依赖
这里附上一张解决Spring循环依赖的流程图
学习
因为图片过大可能致使模糊,须要这套图的能够关注个人公众号:前程有光直接获取
面对大厂问Spring源码而言,不少的Java面试者都纷纷败北,源码没有一个正确的方法学起来确实挺吃力的,在这把以前学源码的一些经验和笔记分享给你们,但愿对那些还在学习Spring源码的朋友有所帮助!
1、 Spring框架功能总体介绍
- Sring Core Container
- Beans (BeanFacotry的做用)
- Context
- Expression Language )
- Spring Data Access/Integration
- Transaction
- Spring Web
- Spring Aop
- Instrumentation
- 控制反转和依赖注入
- 什么是控制反转?
2、Spring IOC容器底层注解使用
- xml配置文件的形式 VS 配置类的形式
- 基于xml的形式定义Bean的信息
- 基于读取配置类的形式定义Bean信息
- 在配置类上写@CompentScan注解来进行包扫描
- 排除用法 excludeFilters
- 包含用法 includeFilters
- @ComponentScan.Filter type的类型
- FilterType.CUSTOM 自定义类型如何使用
3、Spring Ioc容器源码解析
- Spring源码解析之扩展原理
- ApplicationListener:Spring是如何发布事件的? )
- BeanDefinitionRegistryPostProcessor的处理源码流程
- BeanFactoryPostProcessor 处理流程
- Spring Bean的实例化过程
- bean实例化过程的调用链
- bean的实例化过程源码分析
- SpringIOC容器启动源码的分析
4、Spring 是如何解决循环依赖的
- 什么是循环依赖?
- 代码实例:
- 可能存在的问题:
- 解决方案:
- 什么是早期引用?
5、 Spring Aop源码分析
- AOP
- 基本概念
- 简单案例
- @EnableAspectJAutoProxy
- Import(AspectJAutoProxyRegistrar.class)
- 因此咱们来分析AspectJAutoProxyRegistrar类是用来干什么的?
6、spring 事务源码解析
- 什么是事物?
- 事物的特性(ACID)
- Spring事务三大接口介绍
- PlatformTransactionManager接口介绍
- TransactionDefinition 事务属性的定义
7、Spring5.0新特性之日志框架
- 日志框架场景
- 咱们Java中经常使用的日志框架是什么?
- 咱们经常据说的就是以下的日子框架,还不知道怎么选?
- 加入咱们系统使用的是SLF4J做为日志门面,咱们是如何匹配?
- Spring4.Xspring底层使用的日志技术
- Spring5.x 底层使用的日志技术

以上就是这份文档的概况,一次搞懂spring以及核心源码,不论是架构师仍是开发者,又或是运维,都可以从中学到很多。
因为篇幅缘由,这份spring核心笔记已经被整理成了PDF文档,有须要这份spring核心笔记完整文档的能够关注个人公众号:前程有光免费获取