码迷,mamicode.com
首页 > 其他好文 > 详细

IOC和DI

时间:2016-08-10 22:45:21      阅读:185      评论:0      收藏:0      [点我收藏+]

标签:

Ioc—Inversion of Control,即“控制反转”,不是什么技术,而是一种设计思想。在Java开发中,Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制(传统Java SE程序设计,我们直接在对象内部通过new进行创建对象,是程序主动去创建依赖对象)。

 

有了IoC容器后,把创建和查找依赖对象的控制权交给了容器,由容器进行注入组合对象,所以对象与对象之间是松散耦合,这样也方便测试,利于功能复用,更重要的是使得程序的整个体系结构变得非常灵活。

 

DI—Dependency Injection,即“依赖注入”:是组件之间依赖关系由容器在运行期决定

由容器动态的将某个依赖关系注入到组件之中。依赖注入的目的并非为软件系统带来更多功能,而是为了提升组件重用的频率

谁依赖于谁:当然是应用程序依赖于IoC容器;

为什么需要依赖:应用程序需要IoC容器来提供对象需要的外部资源;

谁注入谁:很明显是IoC容器注入应用程序某个对象,应用程序依赖的对象;

●注入了什么:就是注入某个对象所需要的外部资源(包括对象、资源、常量数据)。

 

程序无需直接在代码中new相关的对象,应用程序由IoC容器进行组装。在Spring中BeanFactory是IoC容器的实际代表者(已过时)。使用其扩展的ApplicationContext

取配置文件中的配置元数据,通过元数据对应用中的各个对象进行实例化及装配

由IoC容器管理的那些组成你应用程序的对象我们就叫它Bean, Bean就是由Spring容器初始化、装配及管理的对象

 

技术分享

技术分享

技术分享

技术分享

Ioc容器的代表就是org.springframework.beans包中的BeanFactory接口

org.springframework.context包下的ApplicationContext接口扩展了BeanFactory

 

xml的配置

技术分享

1、<bean>标签主要用来进行Bean定义;

2、alias用于定义Bean别名的;

3、import用于导入其他配置文件的Bean定义,这是为了加载多个配置文件,当然也可以把这些配置文件构造为一个数组(new String[] {“config1.xml”, config2.xml})传给ApplicationContext实现进行加载多个配置文件,那一个更适合由用户决定;这两种方式都是通过调用Bean Definition Reader 读取Bean定义,内部实现没有任何区别。<import>标签可以放在<beans>下的任何位置,没有顺序关系。

容器目的就是管理Bean,这些Bean将根据配置文件中的Bean定义进行创建

每个Bean可以有一个或多个id(或称之为标识符或名字),在这里我们把第一个id称为“标识符”,其余id叫做“别名”;这些id在IoC容器中必须唯一。

 

使用静态工厂的方式进行实例化bean

技术分享

 

 技术分享

技术分享

 

 

DI的配置

技术分享

技术分享

 

技术分享

 

IOC和DI

标签:

原文地址:http://www.cnblogs.com/doudouxiaoye/p/5758895.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!