首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
Spring源码分析
炳臣
创建于2023-04-19
订阅专栏
Spring源码分析
等 3 人订阅
共18篇文章
创建于2023-04-19
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
Spring Ioc源码分析 之 Bean的加载(八):初始化
<1> 激活 Aware 方法。 <2> 后置处理器。 <3> 自定义的 init 方法。 Aware ,英文翻译是意识到的,感知的。Spring 提供了诸多 Aware 接口,用于辅助 Spring Bean 以编程的方式调用 Spring 容器,通过实现这些接口,可以增强 …
SpringAop源码分析(基于注解)三:创建代理对象
我们先回到Bean初始化之后,调用BeanPostProcessor后置处理器的地方。 上篇文章我们主要分析的是<1>处代码,现在有了合适的通知器,我们要为当前Bean创建代理对象,把通知器(Advisor)所持有的通知(Advice)织入到 bean 的某些方法前后。 这里的…
Spring IoC 源码分析 (基于注解) (二) 之 包扫描
在上篇文章Spring IoC 源码分析 (基于注解) 一我们分析到,我们通过AnnotationConfigApplicationContext类传入一个包路径启动Spring之后,会首先初始化包扫描的过滤规则。那我们今天就来看下包扫描的具体过程。 上文我们分析了this()…
Spring注解@Autowired源码分析
Spring容器在每个Bean实例化之后,调用AutowiredAnnotationBeanPostProcessor的postProcessMergedBeanDefinition方法,查找该Bean是否有@Autowired注解。 Spring在每个Bean实例化的时候,调…
Spring Ioc源码分析 之 Bean的加载(六):循环依赖处理
循环依赖,其实就是循环引用,就是两个或者两个以上的 bean 互相引用对方,最终形成一个闭环,如 A 依赖 B,B 依赖 C,C 依赖 A。如下图所示: Spring中的循环依赖,其实就是一个死循环的过程,在初始化 A 的时候发现依赖了 B,这时就会去初始化 B,然后又发现 B…
SpringAop源码分析(基于注解)四:拦截器链
本文依据JdkDynamicAopProxy来分析,对CGLIB感兴趣的同学看一看ObjenesisCglibAopProxy相关代码。 我们重点关注第<4>步和第<6>步,这两个地方非常重要,第<2>步涉及比较多,最后我们再分析,先来看下第&#x…
Spring IoC 源码分析 (基于注解)(三) 之 Bean的解析与注册
在上一篇文章Spring IoC 源码分析 (基于注解) 之 包扫描中,我们介绍了Spring基于注解扫描包获取bean的过程。本文我们将一起探讨spring对bean解析,并注册到IOC容器的过程。 上篇文章我们主要分析了第10行的 findCandidateComponen…
Spring Ioc源码分析 之 Bean的加载(三):各个 scope 的 Bean 创建
getSingleton(beanName,objectFactory)方法。 在这段代码中,其实主要是做了一些准备和预处理步骤,真正创建Bean是在singletonFactory.getObject()方法实现的,而 singletonFactory 是由createBea…
Spring Ioc源码分析 之 Bean的加载(五):实例化Bean
实例化Bean的本质其实就是找到一个合适的构造方法,然后通过构造方法调用newInstance()来实例化Bean。 这样看起来实例化Bean的过程很简单,但其实Spring花费了大量经历去寻找合适的构造方法。 这段代码就是实例化Bean的过程。 如果存在 Supplier 回…
Spring Ioc源码分析 之 Bean的加载(七):属性填充
这部分逻辑注释上已经写的很清楚了。 这部分代码主要是来处理XML方式的属性注入,例如xml中<beans>节点中的default-autowire属性,因为本次Spring系列主要是分析注解方式的,这里就不详细分析了。感性趣的朋友可以自己趣了解下~ 这段代码就是我们要分析的核心…
Spring中BeanFactory与FactoryBean的区别
BeanFactory是一个接口,它是Spring中工厂的顶层规范,是SpringIoc容器的核心接口,它定义了getBean()、containsBean()等管理Bean的通用方法。Spring的容器都是它的具体实现如: 这些实现类又从不同的维度分别有不同的扩展。 首先它是…
SpringAop源码分析(基于注解)二:筛选通知器
其中第<2>步就是触发我们BeanPostProcessors的地方。 我们再回过头来看AnnotationAwareAspectJAutoProxyCreator有一个上层父类AbstractAutoProxyCreator,它实现了SmartInstantiationAwa…
Spring IoC 源码分析 (基于注解) 一
IoC 全称为 Inversion of Control,翻译为 “控制反转”,它还有一个别名为 DI(Dependency Injection),即依赖注入。 Spring为IoC提供了2种方式,一种是基于xml,另一种是基于注解。 标签来定义bean,进行管理。 @Bean…
Spring Ioc源码分析 之 Bean的加载(四):createBean()
代码读到这里,大家可能有疑问,从代码上看明明是处理的方法重载,但是为什么处理的是方法注入呢?而且如果我们在bean里设置几个方法重载的话,hasMethodOverrides()方法返回的是false。如果我们打开 AbstractBeanDefinition 类的 hasMe…
Spring注解@Resource源码分析
Spring容器在每个Bean实例化之后,调用后置处理器CommonAnnotationBeanPostProcessor的postProcessMergedBeanDefinition方法,查找该Bean是否有@Resource注解。 Spring在每个Bean实例化的时候,…
Spring Ioc源码分析 之 Bean的加载(一)
当我们显示或者隐式地调用 BeanFactory#getBean(String name) 方法时,则会触发加载 Bean 阶段。代码如下: args :创建 Bean 时传递的参数。这个参数仅限于创建 Bean 时使用。 typeCheckOnly :是否为类型检查。 Spr…
Spring Ioc源码分析 之 Bean的加载(二)
Spring 只处理单例模式下得循环依赖,对于原型模式的循环依赖直接抛出异常。 Spring会把正在创建的原型模式Bean存入ThreadLoacl,在这里通过ThreadLoacl来判断当前Bean是否已经创建。 这段代码注释很详细,就不多解释了。 在spring中有一个@D…
SpringAop源码分析(基于注解)一
关于Aop的原理,简单来讲无非就是用代理模式为目标对象生产代理对象,对原有的方法进行增强。看上去挺简单,但在Spring中,有许多细节是要注意到的。比如: 我们可以带着这些疑问来看源码,有助于我们的理解。 先来一个注解方式实现AOP的demo,然后我们后面根据这个demo来分析…