【SpringBoot2】Spring容器的本质就是两个HashMap

做为Java程序员,我们就是Spring的用户,Spring的影子在我们的代码里几乎是无处不在,那Spring到底是什么,带给我们什么,如何工作的呢?这个简单问题貌似又不太好讲。例如如果要问一下什么是Spring框架, 可以找到大量的解答,基本内容如下:

Spring是一个开源的应用程序框架,旨在简化Java EE应用程序的开发过程。Spring是一个容器 ,主要功能是管理用户的Bean,因其能够管理bean生命周期以及提供基础设施支持而广受欢迎。

Spring框架具有分层架构,支持从表现层到持久层的各个层次,但它并不是专门针对某一层的解决方案。

它的主要特点包括依赖注入(DI)和面向切面的编程(AOP)。此外,Spring还提供了集成多种持久化技术、整合多种Web MVC框架的能力,并且可以通过使用控制反转(IoC)和依赖注入来降低组件之间的耦合度。

Spring框架还包括了事务管理服务和其他高级功能,使得开发者能够在不手动处理事务的情况下,享受到这些服务的便利。

总的来说,Spring是一个轻量级的解决方案,旨在提供一个高度可扩展和易于使用的平台,帮助开发者快速构建高效的企业级应用程序

上面的解答是不是对的呢?当然是了,这就是Spring的基本作用,如果面试的时候这么回答,问题不大,但是呢我们会有些心虚——Spring到底是什么呢?

我们心虚的根源在于没有将Spring的庞大体系摒弃掉,找到最精华的部分,最根的部分,也就是Spring容器到底是什么。

1.Spring容器的本质

我们在看一些开源框架的时候,经常会看到“容器”这个名字,例如前面的Tomcat里就大量用到这个概念,那到底什么是容易呢?其实所谓的容器就是一个Map而已,我们将同类型的文件、对象等放在一个Map里,需要使用的时候直接从这个Map里找,这就是容器。

而Spring框架的作用是管理我们的Bean,可以简单理解为就是我们自己写的业务代码。很多时候我们的代码是需要继续定义更具体的类的,像这样:

class School{

private Teacher teacher;
private Student student;
private Building building;
}

而有些类会在多个地方用到,例如Teacher可能在科研项目申请服务中用到,Student可能在奖学金系统中用到,Building可能在学校资产管理中用到。而教学活动则同样需要Teacher、Student和Building三者。

所以我们定义的类与具体要使用的场景是一个复杂的多对多关系,这时候我们就想了,该如何存储这些类呢?需要的时候如何查找这些类呢?我们需要维护这个复杂的多对多关系吗?

Spring采取的措施是将这些类的信息都保存在一个HashMap里,其他业务谁需

  • 22
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

纵横千里,捭阖四方

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值