JavaEE进阶第一课:Spring核心与设计思想

Spring是一个IoC容器,它通过控制反转(IoC)和依赖注入(DI)来减少代码间的耦合。IoC是将对象的创建和管理交给Spring,降低了组件之间的依赖。DI是实现IoC的具体手段,允许对象在被创建时注入依赖,而不是自行创建。文章通过示例说明了如何使用DI降低代码耦合,并指出Spring作为工具箱,负责对象的生命周期管理,提供更高效和灵活的编程方式。
摘要由CSDN通过智能技术生成

1.Spring是什么

用官方的话来说:Spring是包含众多工具方法的IoC容器
但是仅仅这样一句话,就会让大家有许多不解?什么是IoC?什么是容器?接下来围绕这句话进行解释

1.1什么是容器

容器,顾名思义就像我们的水杯一样,可以装水也可以倒水。我们很早就接触过类似的东西,例如:
Map,List就是数据存储容器
Tomcat就是Web容器
Spring也是如此

1.2什么是IoC

IoC是控制反转的英文缩写,单单一个控制反转是没办法让我们明白IoC是什么的,这里就需要一个形象的例子来解释。
在这里插入图片描述
将上图转换为代码一般为:(为方便写一起了)

public Class Main{
	Car car;
	public void init(){
        Car car=new Car();
        car.init();
    }
}

public Class Car{
	Body body;
	public void init(){
        Body body=new Body();
        body.init();
    }
}

public Class Body{
	Bottom bottom;
	public void init(){
        Bottom bottom=new Bottom();
        bottom.init();
    }
}

public Class Bottom{
	Tire tire;
	public void init(){
        Tire tire=new Tire();
        tire.init();
    }
}

public Class Tire{
	int size=20;
	public void init(){
        //
    }
}

这么写看样子没问题,但缺有个非常大的缺陷。注意看,如果,此时我的Tire不再是固定轮胎大小,而是想根据传入的参数确定大小,就像:

public Class Tire{
	int size=20;
	public Tire(int size){
		this.size=size;
	}
	public void init(){
        //
    }
}

一旦这里修改,我们调用Tire类的Bottom类的代码也要修改,一旦Bottom要该,他的上级是不是也要修改。如果这里的上级过多,是不是牵一发而动全身了。为什么会这样,这是因为代码的耦合性太高了,所以IoC就是解代码耦合的一种思想或目标
采用IoC的思想,之前我们是把Tire对象的生命周期安排在程序员自己手中,也就是我们在Bottom里面创建现在我们把这个控制权交给Spring。这里Main里面的代码不要过多关注,只是模拟Spring的存取对象,主要是看思想。我们可以这样处理代码:
我们不再在Bottom中new Tire 而是直接给他注入一个Tire对象,往上亦是如此。

public Class Main{
	public void init(){
		Tire tire=new Tire(100);
		Bottom bottom=new Bottom(tire);
		Body body=new Body(bottom);
        Car car=new Car(body);
        car.init();
    }
}

public Class Car{
	Body body;
	public Car(Body body){
		this.body=body
	}
	
	public void init(){
        body.init();
    }
}

public Class Body{
	Bottom bottom;
	public Car(Bottom bottom){
        this.bottom=bottom;
	}
	public void init(){
        bottom.init();
    }
}

public Class Bottom{
	Tire tire;
	public Car(Tire tire){
		this.tire=tire;
	}
	public void init(){
        tire.init();
    }
}

public Class Tire{
	int size=20;
	public void init(){
        //
    }
}

按上修改后,我们再修改Tire类将不再影响Bottom,我们的代码耦合性就变低了,观察两种代码,我们可以发现一个区别:我们类的创建反过来了。
第一种是先Car再到Tire,而第二种是Tire再到Car,改进后不再是上级类创建下级类了,而是下级类创建完注入到上级类中,它实现了控制权的反转,此时下级类的改变不再影响上级,这就是IoC的思想。

1.3什么是DI

说到IoC就必须要提到的是DI,那么什么是DI呢?DI是依赖注入的英文缩写。
一般来说,IoC和DI是同一概念的不同阐述。但更细一点的话,IoC是解耦合的思想,DI是具体手段。

Spring的核心功能

想要了解Spring的核心功能,还是得归结到Spring是什么这句话上:
Spring是包含众多工具方法的IoC容器
作为容器最重要的就是存取内容。那么学习Spring就是学习他的核心:
如何将对象存⼊到 Spring 中,再从 Spring 中获取对象的过

那么这样又什么好处呢?把对象当作工具,每次创建对象都是重新制造工具,那么为何不制造好要用的时候直接用呢?Spring作为容器,把你的对象的创建和销毁的权利都交给 Spring 来管理,就可以解决这个痛点。
接下来,我会同步的更新Spring之后的内容,给你最优的学习路线,还请多多点赞和关注!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值