Spring 核心思想

Spring 是什么?如何理解 Spring?

我们通常所说的 Spring 指的是 Spring Framework(Spring 框架),它是个开源框架,有着活跃而庞大的社区,这就是它之所以能经久不衰的原因。Spring 支持广泛的应用场景,它可以让 Java 企业级的应用程序开发起来更简单。

用一句话概括 Spring:Spring 是包含了众多工具方法的 IOC 容器。

IOC 容器是什么?

计算机中的容器

我们先来谈谈容器是什么,在计算机中的容器,其实和我们日常所说的容器其实是一一回事。

在日常生活中,
书架的可以用来放书、衣柜可以用来放衣服、瓶子可以用来装水,它们都是容器,而容器就是可以用来容纳东西的东西。

在计算机领域中,
List / Map 是一个用来存储数据的容器,Tomcat 是一个放 Web 程序的容器。

IOC 容器

IOC:Inversion of Control ( 控制反转 )

基于 IOC 这样的思想,对于 Spring 框架来说,就是由 Spring 来负责控制对象的生命周期和对象间的关系。也就是说,Spring 这个 IOC 容器,说的是对象创建和销毁的权利都交给 Spring 来管理了,它本身具备了存储对象和获取对象的能力。

怎么理解上面的这句话呢?

举个例子:比方说,一家汽车公司需要根据用户的需求,来定制一辆车,刚开始用户说按汽车公司的设计来,只要达到他需要的车速即可,配置都按最高的来。但是,用户中途改变注意了,他想让汽车轮胎变大一些,用来跑越野,这时候汽车厂商原先设计的汽车底盘、框架、零件都作废了。因为刚开始的底盘、零件都是和轮胎配合好的,如果重新按设计轮胎大小的话,就会影响之前的定制,从而带来损失。

这有一种 " 牵一发而动全身 " 的感觉,而实际上,在传统 Java 程序中,都是由我们在类内部主动创建依赖对象,从而导致类与类之间高耦合,难以测试、难以修改。

而有了 IOC 的思想后,对于刚刚的汽车公司的例子就是,公司按照零件的标准来,先根据不同的轮子,再采用不同的底盘和框架。公司并不是一下子就设计好一个完整的产品。而是,汽车厂商有什么样的标准,就按什么样的标准来。往后,用户需要什么尺寸的轮胎,公司直接向代理工厂下单,配套使用一类底盘,如果用户中途又改变选择了,这类底盘就不用了,再换一类其他的底盘,倒不至于之前的底盘和零件都因为一次定制都全部作废了。

上面的汽车厂商的例子就是,厂商需要什么零件,只需要和代理工厂说就好,不管代理工厂让什么员工去实现零件,这都和厂商没有关系,厂商只需要付钱给工厂,而代理工厂只需要交货并拿钱就行了。而汽车厂商只需要和用户打交道,用户有什么需求,厂商就需要按照其需求来即可。

这就带来了一个好处,用户与汽车厂商装配零件的来源没关系,汽车厂商与代理工厂的工人没关系…

所以综上所述,IOC 思想,最大的作用就是,解决了代码的耦合性。

Spring 最核心的功能是什么

因为 Spring 本质上就是一个 IOC 容器,那么它就具备两个功能:

  1. 将 Bean ( 对象 ) 存储到 Spring ( 容器 ) 中。
  2. 将 Bean ( 对象 ) 从 Spring ( 容器 ) 中取出来。

而实际上,Spring 最核心的功能也就是上面的两个功能,当然,也就是我们重点理解、重点学习 Spring 需要做的事情。

DI 是什么?IOC 和 DI 有什么区别?

DI:Dependency Injection ( 依赖注入 )

所谓依赖注入,就是由 IOC 容器在运行期间,动态地将某种依赖关系注入到对象之中。所以,依赖注入和控制反转是从不同的角度的描述的同一件事情。本质上,DI 就是指通过引入 IOC 容器,利用依赖关系注入的方式,实现对象之间的解耦。

IOC 和 DI 之间的区别

IOC 是一种思想,DI 是一种基于这种思想的实现。

实际上换句话说,IOC 是策划者,DI 是执行者。

比方说,今天我过生日,想去下饭馆,那么我就想去吃火锅," 去吃火锅 " 就是 IOC,那么市里面有很多火锅店,我究竟去哪家店呢?我究竟采取坐公交的方式去店里面、还是自己开车去店里面呢?这就可能根据个人口味、交通路况等一些情况再做决定了。那么后者,我需要动身去火锅店这个行动就是 DI.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

十七ing

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

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

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

打赏作者

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

抵扣说明:

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

余额充值