几句话讲清楚:spring控制反转与依赖注入

1. 要解决什么问题

初学者可能会对spring框架的控制反转和依赖注入有点晕,网上很多文章写得也是云里雾里。

要理解一项技术,先要清楚它是来解决什么问题的。

Java程序中,Java类是基本的代码组织单位。当某个类要使用另一个类时,自然的做法是创建另一个类的对象,然后调用该对象的方法。这样做在程序规模较小时没什么问题,但当程序规模很大时这些类之间过于紧密的耦合会导致后续开发维护困难。例如要替换其中某个类,就不得不修改所有涉及这个类的代码。

spring框架所谓控制反转与依赖注入的目的,就是去除java类之间这些new来new去的操作,去掉它们之间的依赖关系,就这么简单。

2. 怎么解决

上面提到类里面创建另外一个类对象会造成耦合太紧,Spring框架就把创建类的行为从类中拿出来放到Spring框架里去做,类与类之间创建关系就没有了。

本来由类控制其所依赖的类对象的创建,现在把创建动作放到Spring框架里了,由框架控制所有类对象的创建,这就是“控制反转”。

框架创建了类所依赖的对象,然后把这些对象传给(注入)依赖它们的类,这就是“依赖注入”。

所以,Spring框架中控制反转(Inversion of Control / IoC)与依赖注入(Dependency Injection / DI)实际上讲的是同一个事情,只是角度不同。


评论

kevin
不错,懂了
回复 · 5年前