手写spring源码
文章平均质量分 91
本专栏专注于深入探索Spring框架内部原理的博客专栏。通过亲手编写Spring核心模块的源码,我们将带您逐步揭示Spring的工作机制,加深您对Java和Spring开发的理解与技能。无论您是想进一步掌握Spring框架或对源码阅读感兴趣,本专栏将为您提供宝贵的学习资源。
shark-chili
这个作者很懒,什么都没留下…
展开
-
手写spring第九章-Spring中整合AOP
由于篇幅的原因,笔者就以前置增强作为示例来实现基于手写的Spring整合AOP。我们都知道下定义了一个名为Advice的接口,我们通过语义就知道他是进行相关增强操作的。由于我们本文的目的是实现方法前置增强。既然有了前置增强这样的接口,我们就可以继承这个接口定义本文所需要实现方法前置增强的接口了有了这样一个动作后,我们自然是需要获取这个增强对象,很多人可能会认为我们应该在或者中增加一个getAdvice的方法方便我们去获取增强对象。原创 2020-07-31 15:23:00 · 231 阅读 · 0 评论 -
手写spring第八章-定义标记类型Aware接口,实现感知容器对象
文章目录前言需求分析实现思路解决方案概述类图相关代码测试测试代码输出结果总结参考文献 前言 需求分析 实现思路 解决方案概述 类图 相关代码 测试 测试代码 输出结果 总结 参考文献原创 2021-10-17 02:42:12 · 271 阅读 · 0 评论 -
手写spring第七章-完成便捷实现bean对象初始化和销毁方法
前言 在日常开发中,我们会遇到这么个场景:某些老项目中会出现原始jdbc或者线程池等工具的使用,在繁忙的开发中,在每个功能模块手动连接、释放对于开发人员来说,这简直就是一件丧尽天良的事情。 需求分析 对此我们预想通过配置或者实现某些接口,让spring自动完成对这些类对象自动完成类初始化以及资源销毁。 解决方案 思路概述 对此我们想到两种实现方式。 方案一即基于配置完成bean对象初始化,以及向虚拟机注册钩子,保证在虚拟机关闭之前,执行销毁操作。 方案二即可通过继承 类图设计 代码结构 相关代码 测试 参考原创 2021-10-02 01:52:24 · 598 阅读 · 0 评论 -
手写spring第六章-实现应用上下文,完成bean的扩展机制
文章目录前言需求分析思路分析设计解析类图项目结构相关代码BeanFactoryPostProcessor(bean工厂扩展)BeanPostProcessor(bean扩展)ApplicationContext (上下文行为定义,继承ListableBeanFactory,从而可以根据类类型获取前后置处理器)ConfigurableApplicationContext(上下文行为定义)AbstractApplicationContext(上下文行为规范,使用模板方法定义执行顺序)AbstractRefres原创 2021-09-25 16:55:23 · 445 阅读 · 0 评论 -
手写spring第五章-简化用户操作,基于xml完成bean容器初始化
前言 通过上一篇文章,我们完成bean容器的初始化,但是我们可以观察到完成一次容器初始化步骤十分繁琐,要是仅仅注入几个bean还好。一旦出现需要注入几十个或者上百个bean的场景,使得用户需通过代码去一个个添加bean的方式,我认为这种方案简直是在侮辱人。 本次需求 对此,我们要让我们的框架更加人性化一点,我们本篇文章希望做到能够通过简单的配置的方式,就能让用户将需要的bean注入到我们的容器中。 设计思路 扩展点分析 对于本次框架扩展,我们需要完成将各种配置文件信息转化为bean定义对象,再完成bean的原创 2021-09-11 13:45:23 · 307 阅读 · 1 评论 -
手写spring第四章-完善bean实例化,自动填充成员属性
前言 在之前的系列中我们完成了无参或有参的bean初始化,但是随着业务的不断改变,某些业务需要不断新增成员属性,这时如果我们不断增加构造方法,不仅会使代码变得笨重,且使用spring容器进行bean配置也会带来很大的不便,对此我们就需要对框架进行进一步优化。 分析 需求 简单来说,我们的bean很多情况下,会不断新增成员变量,但是我们又不想为了去适配这些成员变量而去不断堆砌构造函数,所以,本次的需求即:如何实现仅仅在配置中配置一次当前类所对应的成员变量bean,就能实现在框架任何一个角落都能够在无需构造函数原创 2021-09-08 01:16:56 · 420 阅读 · 0 评论 -
手写spring第一章-基础容器搭建
概述 众所周知spring的作用,即对bean对象进行管理,保证开发人员无需花费大量精力去管理业务开发过程中各种对象的创建与管理。所以笔者就以手写spring源码的方式通过不断的迭代完成自研框架的编写以及项目驱动的方式去理解掌握spring核心思想与设计。 思路与设计 简述大体思路 我们都知道spring能够完成bean对象的管理,都是在容器中进行操作,以及所有的bean的信息都会存储在一个bean定义的对象中。 所以,在我们编写自研框架的第一步,就是设计一个bean定义类和一个bean定义管理类。 bea原创 2021-09-02 21:41:36 · 422 阅读 · 1 评论 -
手写spring第三章-重构,使用依赖关系完善实例化bean操作
文章目录前言目的设计思路BeanFactory改造点分析AbstractBeanFactory改造点分析实例化工具设计AbstractAutowireCapableBeanFactory改造点分析类图代码结构代码BeanFactoryAbstractBeanFactoryInstantiationStrategySimpleInstantiationStrategyCglibSubclassingInstantiationStrategyAbstractAutowireCapableBeanFactory测原创 2021-09-04 22:53:56 · 487 阅读 · 0 评论 -
手写spring第二章-运用设计模式编写可扩展的容器
文章目录前言需求分析设计思路分析类图代码结构代码BeanFactoryAbstractBeanFactorySingletonBeanRegistryDefaultSingletonBeanRegistryAbstractAutowireCapableBeanFactoryDefaultListableBeanFactoryBeanDefinitionRegistry测试参考文献 前言 基于上一章节手写spring第一章-基础容器搭建 ,我们制作了一个简单的spring容器完成bean的注入,但在功能和架构原创 2021-09-03 02:08:58 · 268 阅读 · 0 评论