Spring核心与设计思想(上)

简介: Spring核心与设计思想(上)

一、Spring是什么?

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


如果用一句话来总结Spring,那就是:


Spring是包含了众多工具方法的IoC容器


那么问题来了,工具方法是什么?IoC是什么?容器又是什么?

工具方法我们以后再说,我们先来看看IoC和容器


二、什么是容器?

容器容器,肯定是要装东西的。其实我们之前学的List还有Tomcat都是容器,为啥这样说呢?

你看List/Map里面放的是不是都是数据,那他不就相当于是一个数据存储容器吗?

还有Tomcat,他里面不是有webapps这个目录,我们之前不都是把servlet项目代码放到webapp这个目录下吗?这个webapps不就是项目的容器吗?而这个webapps目录是Tomcat下面的一个子目录,那么我们把Tomcat称作是一个Web容器,完全没有问题呀!


三、什么是IoC?

初识

Spring也是一个容器,而且Spring就是一个IoC容器。

那么关键的来了,什么是IoC


IoC = Inversion of Control 翻译成中文就是控制反转的意思。

也就是说Spring是一个”控制反转“容器。


这个控制反转是什么意思呢?

你看,一般情况下,我们在A类中,想要去调用B类中的方法,是不是需要我们在A类中去实例化B类(new一个B类对象)然后再通过这个实例化出来的对象去调用B类中的方法。


也就是说,当前B类的控制权是再我们A类手中的,但是这样会带来一些问题(如耦合性过高),很多情况下,我们没必要用到谁就实例化谁,我们可以让”其他人“来操作(也能够满足我们的要求,同时这个时候B类的生命周期也与我们A类无关,我们不需要操心那么多,我们只要能拿到我们需要的就好)相当于我们把控制权交给了这个其他人,我们在需要用操作对象时候,让这个”其他人“来帮助我们来管理就好了。

谁调用A,谁就把A需要的B来传给,但B的生命周期与A类无关(这样即使B类发生了变化,A类也不用管)


这个“其他人”,就是 Spring 框架。

此时,我们想要 A 类中调用 B 的时候, 告诉 框架,我要在 A 中 调用 B 了。

至于 B 的生命周期,和我们没有任何关系。

这是控制反转。



前面说过: Spring 是一个 控制反转 的 容器。
也就是 像之前在传统开发的时候,所有需要我们自己去new东西,都不需要我们再去new 了。

因为我们把控制权 “反转给了” Spring 框架。

Spring 会帮我们管理所有的对象(Bean)


在 Spring 中,我们管 对象,叫做 Bean。

例子阐述IoC

下面我们结合一个具体的例子来看看IoC思想有什么好处?

假如,我们现在构建⼀辆“⻋”的程序,我们的实现思路是这样的


343579e292dc4f51a83a868ce9677301.png

构建⼀辆⻋(Car Class),然⽽⻋需要依赖⻋身(FrameWork Class),⽽⻋身需要依赖底盘(BottomClass),⽽底盘需要依赖轮胎(Tire Class),最终程序的实现代码如下


91625eb1e6b645f480d25af3ec0b2763.png


这样有什么问题呢?


就是当我们的Tire的size需要改变的时候,从上到下,因为Bottom依赖Tire,所以Bottom要对应的改变;同时FrameWork又依赖着Bottom,那么FramWork也要做出对应的改变:同时Car又依赖着FrameWork,所以Car类也要做出必要的改变。


不信你看代码


dbc576cd1558418ea4afad74c8b06929.png


这样下来从上到下都有改变,整个代码的耦合性太高了。

为啥会这样呢?

因为每个类中都⾃⼰创建下级类,自己把活都干了。当下级类发⽣改变操作,自己随着也要改变。


但这其实完全是没有必要的


比如我们在Car类中,我们需要的只是一个FrameWork对象,你给我们传一个FrameWork对象不就好了吗,我干嘛还要自己new一个对象呢?(new完后还有摊子事,真是吃力不讨好)

相关文章
|
6月前
|
存储 搜索推荐 Java
【JavaEE进阶】 Spring核⼼与设计思想
【JavaEE进阶】 Spring核⼼与设计思想
|
Java 测试技术 开发者
Spring核心与设计思想
Spring是一个用于构建企业级应用程序的开源框架,它为Java开发者提供了一种简化和加速应用程序开发的方式。Spring框架提供了大量的功能和工具,使开发人员能够更轻松地创建各种类型的应用程序,包括Web应用程序、RESTful服务、批处理作业、消息驱动的应用程序等。
127 0
|
存储 搜索推荐 Java
【Java】Spring核心与设计思想
【Java】Spring核心与设计思想
|
存储 Java 程序员
Spring 核心与设计思想
Spring 核心与设计思想
|
存储 Java 程序员
Spring核心与设计思想(下)
Spring核心与设计思想(下)
|
存储 Java 程序员
Spring核心与设计思想
这篇文章作为Spring篇目的开篇,带领大家认识Spring,知道为什么要用Spring框架,以及了解Spring的核心与设计思想。
121 0
Spring核心与设计思想
|
存储 搜索推荐 Java
Spring【Spring的概述与设计思想】
Spring【Spring的概述与设计思想】
Spring【Spring的概述与设计思想】
Spring框架核心及设计思想
Spring框架核心及设计思想
129 0
Spring框架核心及设计思想
|
存储 搜索推荐 Java
【Spring】Spring 核心与设计思想
Spring是什么? 什么是容器? 什么是IoC? 传统程序开发 控制反转式程序开发 两种开发方式对比总结 理解SpringIoC DI 概念说明
【Spring】Spring 核心与设计思想
|
缓存 JavaScript
spring5源码系列--循环依赖的设计思想
spring5源码系列--循环依赖的设计思想
123 0
下一篇
无影云桌面