手写一个简易的spring

本文介绍了如何手写一个简易的Spring Ioc,详细讲述了控制反转的概念,以及Spring中容器的获取,特别是ApplicationContext接口的作用。通过BeanDefinition和BeanFactory类实现Bean的存储和获取,使用HashMap模拟Bean容器,并简要提及了测试部分。文章总结了基本的bean容器操作,预告后续将深入探讨IoC。
摘要由CSDN通过智能技术生成

手写一个简易的spring之Ioc的实现

一、概念

控制反转(IoC,Inversion of Control),是一个概念,是一种思想。指
将传统上由程序代码直接操控的对象调用权交给容器,通过容器来实现对象的装配和管理。控制反转就是对对象控制权的转移,从程序代码本身反转到了外部容器。通过容器实现对象的创建,属性赋值,依赖的管理。简单来说,这里的反转指的就是将原先new代码的权力交付给spring的容器去实现。

二、Spring中容器的获取

样例代码
如上,我们先来看看ApplicationContext,ApplicationContext 是一个接口,
ApplicationContext 用于加载 Spring 的配置文件,在程序中充当“容
器”的角色。将配置文件的路径传给ClassPathXmlApplicationContext(常用实现类),读取配置文件,完成容器对象对象的初始化。

容器对象初始化时,一次性全部装配好所有的Bean,效率高,但占内存,哈哈哈哈哈哈,也算空间换时间吧。

当我们创建好一个容器对象之后,我们就可以从这个容器对象里面getBean方法去取数据了,如下
容器图例

根据前面我们可以大致了解spring中Bean是如何操作的,接下来我将带大家去实现一个最基本的Bean的存和取。
spring设计
定义:BeanDefinition,可能这是你在查阅 Spring 源码时经常看到的一个类,例如它会包括 singleton、prototype、BeanClassName 等。但目前我们初步实现会更加简单的处理,只定义一个 Object 类型用于存放对象。

此处的只用Object实际上是不妥的,后面会改成Class,通过反射newInstance创建对象。

注册:这个过程就相当于我们把数据存放到 HashMap 中,只不过现在 HashMap 存放的是定义了的 Bean 的对象信息。
获取:最后就是获取对象,Bean 的名字就是key,Spring 容器初始化好 Bean 以后,就可以直接获取了。

BeanDefinition

  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值