spring原码
百起
这个作者很懒,什么都没留下…
展开
-
spring 如何通过cglib 生成动态代理
目标理解spring中如何通过cglib的方式生成动态代理。 我们都知道,spring中存在两种动态代理的方式,第一个是jdk动态代理的方式,本质是通过反射实现,第二个是cglib的方式,这个是需要操作字节码实现。第一种方式虽然效率会更高,但是却存在硬伤,代理类必须是基于接口的。而方式二则没有这些限制。我们之前有一篇文章是分析jdk动态代理方式实现,这篇文章则重点是cglib方式如何实现动态代理...原创 2020-05-03 23:45:15 · 1112 阅读 · 0 评论 -
一张图让你读懂spring bean的生成过程
目的:不拘泥与具体某个方法,对spring bean的生成能有一个整体的把握。图片整体预览正文spring bean的生成主要分为两个阶段,第一个是bean Definition的生成,第二个是bean的生成。也就是本文的主要内容。对于spring实例初始一个bean,我们主要分析一下几点子类beanDefinition合并父类bean Definition的一些数据;...原创 2020-04-28 08:47:55 · 1592 阅读 · 0 评论 -
spring 循环依赖注入实现原理(源码分析)
结论只有单例模式下的循环依赖才可以,其他模式会报错。对循环依赖的简单介绍A依赖B、B依赖A 形成一个依赖环。spring的解决方案是,实例化A,之后将A封装到一个ObjectFactory对象中存储。对A进行属性填充的时候,发现有B需要实例化,则去实例化B,实例化B的时候也会将B封装到一个ObjectFactory对象中存储。B实例化完之后,会去填充B的属性,这是发现有A属性需要填充,这是不...原创 2020-04-28 08:09:01 · 1622 阅读 · 0 评论 -
Bean Definition 生成过程详解
1、目标:个人认为spring项目启动过程主要分为两步,一个是bean Definition的获取,一个通过bean Definition生成bean。但是由于过程十分复杂我们先分析第一步。2、bean Definition的种类分析第一类:框架编写过程中硬编码到容器中的,大概是6个;第二类:使用spring框架的程序员自己写的bean,比如被@component标注的对象;第三类:从classpath视实际情况而自动装载的一些bean。包括tomcat 相关的,http相关的等;原创 2020-04-18 23:26:00 · 2337 阅读 · 2 评论 -
SpringBoot的Bean Definition 生成过程(源码分析)
1、目的:从源码的角度分析整个springboot的启动流程、了解springboot项目在整个启动过程都干了一些什么。因为spring项目的启动主要是分为两步,一个是bean definition的获取,一个是根据bean definition 生成bean。本篇主要涉及2、demo项目结构的简单描述。基本的东西都是有的,包括dao,service、model、且包含myba...原创 2020-04-16 17:50:37 · 3482 阅读 · 2 评论 -
Spring Aop JDK动态代理实现原理分析(源码)
1、spring 的aop作用spring 的aop的动态代理都是为了给实现了接口的类做增强(必须是实现了接口),比如增加日志的功能。2、本文对你的收获:我们从这个文章中应该能知道生成的代理对象是什么样的;同时就能知道代理对象对象方法执行流程,首先我们看下代理后的对象张什么样,其中ConfigInterface是我们需要代理的对象。//// Source code rec...原创 2020-04-06 21:10:21 · 1634 阅读 · 0 评论 -
spring中的各种processor (BeanPostProcessor)
这些后置处理器其实都是一些独立的功能,从BeanFactory抽离出来。比如有专门处理注解的,有专门负责aop的等。接下来我们会以表格的形式,描述这些后置处理器什么情况会加载进容器,什么时候调用,作用都是什么。并且从原码的角度稍作分析。所有的BeanPostProcessor的调用时机都是bean 实例化完成,尚未初始化时(注意区分实例化和初始化)关键代码:exposedObject =...原创 2020-04-04 22:35:01 · 2620 阅读 · 0 评论 -
Spring中的aware接口&原理分析
Spring中有很多继承于aware中的接口,这些接口到底是做什么用到的。aware,翻译过来是知道的,已感知的,意识到的,所以这些接口从字面意思应该是能感知到所有Aware前面的含义。从spring源码来分析,的话,实现了这些接口的实例,能获取到系统中的一些属性。比如实现了BeanNameAware 的对象,能拿到bean在系统中的名字,比如实现了ApplicationCont...原创 2020-04-04 10:47:45 · 905 阅读 · 0 评论 -
spring初始化bean全流程 getBean
原创 2020-04-02 23:25:00 · 292 阅读 · 0 评论