SpringIoC
强依赖关系
现在有两个类,类A和类B,其中A类中有一个fun方法,B类向调用这个方法有什么办法呢?首先fun是一个普通方法,要调用必然要有A类的对象。因此可以这样:
但这样的话,A和B之间就会产生一种关系,一种强依赖关系,B类是依赖于A的也就是说没有A类这个对象它就调用不了A类的方法。
而Ioc就是为了降低这种依赖而生的。那么如何降低依赖呢?
控制反转
Inversion of Control,缩写为IoC,译为控制反转,是面向对象编程的一种设计原则。目的是用来降低代码之间的耦合度。
- 刚开始创建对象的权利在B类中,或者说在程序中,也就是说由程序来主动创建对象
- 但有了控制反转就不一样了,A类和B类都无需自己创建对象了。都统统交给容器。容器来管理对象的整个生命周期,和对象之间的关系。
这便是控制反转,反转的是一种权利,一种创建对象的权利。
虽然程序不用创建对象了,交由了Spring容器,但程序要用对象啊,这样才能调用方法,这一点Spring自然是明白的,因此Spring又有一个依赖注入技术。
依赖注入
在上述情景中B类需要A类的对象,你不用自己new了,Spring容器来给你注入一个,就像打针一样,这样你就有A类的对象了,这样的话,你和A类也没多大关系了,这个A类的对象是容器给你的,又不是你new的。
依赖注入的优点
- 每个类都会将自己注册在容器中,由容器统一管理。
- 程序需要什么资源(哪个类的对象)容器就给你提供一个,无需自己创建。
- 重复利用,提高了对象的利用率。
- 降低了程序间的耦合度
- …