Spring中控制反转和依赖注入

Spring之IOC控制反转和DI依赖注入

1、控制反转是什么?

IOC控制反转,所谓反转是指使用方本身不负责依赖对象的创建和维护,而将对象的管理(创建、维护、销毁)都交给Spring容器管理,在使用被调用类的时候Spring容器将被调用类的对象反转给使用方(传统的使用方法,使用对象,都是在使用方的内部new出实使用类的对象)。将创建对象的权利交给第三方,控制反转就是控制权的转移。
通过控制反转,可以实现由Spring容器控制各个类之间的关系。借助于控制反转,被调用者是被“注入”而不是被硬编码到使用方的代码中,这可以大大降低调用者和被调用者之间的依赖关系。
比如:A程序要使用B程序中的方法,首先就是要创建(new)出B的对象,然后使用B的对象去调用它的方法。
控制反转,就是将A和B的对象都交由Spring管理。
使用传统的方法,存在的问题:
使用方和被使用方之间的耦合度太高
控制反转带来的好处:
1、资源集中管理,实现资源的可配置和易管理。
2、降低了使用资源双方的依赖程度,也就是我们说的耦合度。
控制反转的使用

2、依赖注入是什么?

DI依赖注入,依赖注入是控制反转的一种实现方式,由IOC容器在运行期间,动态地将某种依赖关系注入到对象之中。也就是获得依赖对象的过程由自身管理变为由IOC容器主动注入。通过反射机制实现。讲的通俗点,就是在运行期,由Spring根据配置文件,将其他对象的引用通过组件的提供的setter方法或者构造方法等进行设定。
所谓依赖注入,是指程序运行过程中,如果需要调用另一个对象协助时,无须在代码中创建被调用者,而是依赖于外部的注入。Spring的依赖注入对调用者和被调用者几乎没有任何要求,完全支持对POJO之间依赖关系的管理。

3、控制反转和依赖注入的关系

依赖注入(Dependency Injection)和控制反转(Inversion of Control)是不同维度的同一个概念。
其实就是:当使用方需要被使用方的时候,在传统的程序设计过程中,通常由调用者来创建被调用者的实例。但在Spring里,创建被调用者的工作不再由调用者来完成,因此称为控制反转;创建被调用者实例的工作通常由Spring容器来完成,然后注入调用者,因此也称为依赖注入。
在这里插入图片描述我自己的理解:控制反转就是由spring容器来控制使用方A调用的具体被使用类B。依赖注入就是使用方A依赖于spring容器的注入。
代码解释:
传统的方式,Servise是通过调用类的创建,进行使用的

@Controller("controller1")
public class Controller1 {
    private Servise service = new Servise();
    public void add(){
        service.add();
        System.out.println("Controller1.add()....");
    }
}

Spring中,将所有的对象交由Spring容器处理,当我们需要使用的所需求的类的资源的时候,Spring就帮使用类注入相应的资源。

@Controller("controller1")
public class Controller1 {
    @Autowired
    private Servise service;
    public void add(){
        service.add();
        System.out.println("Controller1.add()....");
    }
}
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值