spring的控制反转IoC和依赖注入DI

控制反转(Inversion of Control) 是一种设计原则,依赖注入(Dependency Injection)是Ioc的实现方式之一(另一种叫依赖查找)

技术描述

Class A中用到了Class B的对象b,一般情况下,需要在A的代码中显式地用 new 创建 B 的对象。

采用依赖注入技术之后,A 的代码只需要定义一个 private 的B对象,不需要直接 new 来获得这个对象,而是通过相关的容器控制程序来将B对象在外部new出来并注入到A类里的引用中。而具体获取的方法、对象被获取时的状态由配置文件(如XML)来指定。

IoC也可以理解为把流程的控制从应用程序转移到框架之中。 以前,应用程序掌握整个处理流程;现在,控制权转移到了框架,框架利用一个引擎驱动整个流程的执行,框架会以相应的形式提供一系列的扩展点,应用程序则通过定义扩展的方式实现对流程某个环节的定制,“框架Call应用”。基于MVC的web应用程序就是如此。

例子:(我理解的)

// 无ioc
class A {
    private B b = new B();
}

// 用ioc的思想
class A {
    @Autowired
    private B b;
}

DI的原理

根据依赖关系,依次创建对象。如:要创建A,需要先创建其依赖的B。
随着我们不断引入更多的依赖关系,这种复杂性将继续增长。为了解决这个复杂问题,我们需要基于依赖关系树抽取对象的创建过程。这就是依赖注入框架。

spring的注入方法有几种?

  • 构造方法注入

  • 字段注入

    • 注意:在使用字段之前,将无法检查自动注入的对象是否为空。
  • setter注入

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值