谈谈我对Spring框架之IOC控制反转和DI依赖注入的简单理解

摘要:ioc,控制反转,把创建和查找依赖对象的控制权交给了容器,是spring框架的核心,只是一种项目的设计思想,并没有增加什么新的技术。ioc的实现方式就是DI。DI,依赖注入,是指由容器动态地将依赖对象注入到组件中,是ioc的实现方式。而DI的实现机制是反射。

一:IOC控制反转
1.整体认识什么是ioc控制反转
IOC是Inversion of Control的缩写,翻译过来就是“控制反转”或“控制倒置”。指把创建和查找依赖对象的控制权交给了容器,由 Spring IOC 容器来负责对象的生命周期和对象之间的关系。
2.ioc控制了什么
“掌权”的一方是ioc容器,被控制的一方是依赖对象。
ioc容器分为两种:Spring BeanFactory容器,Spring ApplicationContext容器。其实ioc容器也是Java类,只是名字比较高大上,做的事情也和一般的类不一样罢了。
3.什么东西被反转了
控制(外部资源)的权力被反转了。原先这些外部资源(包括对象、资源、常量数据)的获取由对象主动获取,现在在ioc的机制上,这些外部资源(包括对象、资源、常量数据)的获取由对象被动获取,且ioc容器来对这些资源进行注入(即依赖注入)

二:DI依赖注入
1.什么是DI依赖注入
DI(Dependency Injection)依赖注入:组件之间的依赖关系由容器在运行期决定,即由容器动态地将某个依赖关系添加到某个组件中。
2.谁依赖谁,注入了什么
应用程序依赖ioc容器,注入的是外部资源如对象,资源和常量数据。

题外话,其实依赖注入就是对控制反转的同一概念的不同角度的另一种解释,由于控制反转可能有点晦涩难懂,由2004年大师级人物Martin Fowler又给出了一个新的名字:“依赖注入”。

三:如何实现DI,即注入的三种方式
注入分为三种方式:
构造方法注入
Setter方法注入(属性)
注解方法注入(接口)
2.setter方法注入
如果通过setter方法注入,spring会通过默认的无参构造方法来实例化对象,所以一个类中写了有参的构造方法,一定要记得加上无参的构造方法,否则spring无法实例化对象,会报错。
3.注解方法注入
3.1主要有四种方法可以注入:
@Compotment:可以用于注册所有bean
@Respository:主要用于注册dao层的bean
@Controller:主要用于注册控制层的bean
@Service:主要用于注册服务层的bean
3.2有两种描述依赖关系
@Source
@Autowired

本文也参照这下面这位大佬的博客
http://jinnianshilongnian.iteye.com/blog/1413846

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值