对Spring中Ioc和DI的简单认识

本周刚开始学Spring框架,接触到了Ioc和DI这两个概念,结合书上和网上的资料简单谈谈自己的认识。

1.什么是IoC

Ioc—Inversion of Control,即“控制反转”。IoC是Spring的核心。IoC不是一种技术,而是一种思想。
在传统的模式中,当某个Java对象(调用者)需要调用另一个Java对象(被调用者,依赖对象)时,调用者通常会采用“new 被调用者”的代码方式来创建对象。这种方式会导致调用者与被调用者之间的耦合性增加,耦合性是指调用者A需要与被调用者B共同完成一件事,即A需要使用B,A对B产生了依赖,也就是A与B之间存在了一种紧密耦合关系,这是不利于后期项目的升级和维护的。

而在使用Spring框架后,对象的实例不再由调用者来创建,而是由Spring容器来创建。Spring创建好需要被调用的对象,然后存储到一个容器里面。当需要使用时,只用从Spring容器中调用就可以了。Spring容器负责控制程序之间的关系,而不是直接由调用者的程序代码直接控制,这样控制权就由应用代码转移到了Spring容器,控制权发生了反转。这就是Spring的控制反转。有了IoC容器后,把创建和查找依赖对象的控制权交给了容器,由容器进行注入组合对象,所以对象与对象之间是松散耦合,这样也方便测试,利于功能复用,更重要的是使得程序的整个体系结构变得非常灵活。

2.什么是DI

DI(Dependency Injection),依赖注入。依赖注入和控制反转相同,只不过这两个称呼是从两个角度描述同一个概念。从Spring角度来看,Spring容器负责将被依赖对象赋值给调用者的成员变量,这相当于为调用者注入了它依赖的实例,这就是Spring的依赖注入。
依赖注入的作用就是在使用Spring框架创建对象时,动态的将其所依赖的对象注入Bean组件中,实现的方式通常有两种,一种是属性setter方法注入,另一种是构造方法注入。

属性setter方法注入:指Spring容器使用setter方法注入被依赖的实例。通过调用无参构造器或无参静态工厂方法实例化Bean后,调用该Bean的setter方法,即可实现基于setter方法的依赖注入。属性setter注入方法是实际开发中最为常用的一种方式。

构造方法注入:指Spring容器使用构造方法注入被依赖的实例。基于构造方法的依赖注入通过调用带参数的构造方法来实现,每个参数代表着一个依赖。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值