2. IOC

IOC(Inversion of Control,控制反转):所谓控制反转,就是将实例化对象的权利交给Spring容器 .另外一点,Spring主张面向接口编程,这样就是一种松耦合性编程体现.

假设现在有Profession这样一个接口,在其下可以有Programmer,Art,Marketing等等一系列的实现类. 如果现在一个Service当中对其进行引用而且不用这种控制反转的思想的话:

class Service {

Profession p=new Programmer();

}

这样一个这样的Profession只能接收一个具体的实现. 这样的话这个Service就对这个具体的Programmer产生了强烈的依赖性,如果后期我要用到另一个实现Marketing时,这是只能更改代码.如果使用了控制反转的话:

class  Service {

Profession p;

}

仅仅这样就够了,剩下的对象的实例化和对象关系的确定,都是由Spring容器进行管理的.这样就减小了类与类之间的耦合度 . 具体的做法就是在xml文件对这种关系进行配置.对于bean的配置用的是标签<bean>,对于简单的属性用的是<property>.

<bean id="pro1" class="feijishuo.test.ioc.Programmer">

<property name="instrument" value="computer" />

</bean>

这样就配置了一个具有一台电脑的一个程序员.

这名程序要在一个平台上才能展现自己,因此将其放到Service平台上让其尽情的施展自己的才能.一个Bean对另一个Bean进行引用用ref.

<bean id="service" class="feijishuo.test.ioc.Service">

<property name="company" value="Game Company" />

<property name="pro1" ref="pro1" />

</bean>

对于一个游戏公司而言不可能只有程序员,还得有Art,Marketing等等. Spring在装配集合类型时提供了list,set,map,props .

<list>和<set>当属性是array或者是一些java.util.Collection时候非常有用.

<map>和<props>,对应的是java.util.Map和java.util.Properties. 两者唯一的不同就是<props>要求键值都是String.<map>则没有要求.

<bean id="service" class="feijishuo.test.ioc.Service">

<property name="company" value="Game Company" />

<list>

<ref bean="art" />

<ref bean="programmer" />

<ref bean="marketing" />

</list>

</bean>

现在对这个游戏公司的各个部门进行介绍:

<bean id="service" class="feijishuo.test.ioc.Service">

<property name="company" value="Game Company" />

<map>

<entry key="program" value-ref="click" />

<entry key="art" value-ref="pic" />

<entry key="market" value-ref="talk" />

</map>

</bean>

2. IOC

时间: 2024-08-03 15:41:36

2. IOC的相关文章

框架学习之Spring(一IOC)----HelloWrod

一.概述 Spring是一个开源框架,它的核心是控制反转(IOC)和面向切面(AOP).简单来说,Spring是一个分层的JavaSE/EEfull-stack(一站式)轻量级开源框架. EE 开发分成三层结构: * WEB 层:Spring MVC. * 业务层:Bean 管理:(IOC) * 持久层:Spring 的 JDBC 模板.ORM 模板用于整合其他的持久层框 架 注:Spring框架既可以单独使用 ,也可以结合其他优秀框架一起使用. 二.环境搭建 开发包: 下载地址:http://

分享基于.NET MVC+EF CodeFirst+IOC+EasyUI的框架设计

**注:要做工,没什么时间,等有空时会上传到GIT,项目结构如上,简单的说一下: **支持IOC及多数据库等,各项目由MVC区域隔离: 主要使用基于接口与抽象类进行高度的抽象与接口隔离,与其它框架比较优点如下: 1,抽象度非常高,接口隔离,项目清晰完整,任何一部分均可且容易替换:一开始就非常注重非陷入复杂化: 2,框架非常易用,且易于扩展:编程新手也可立即上手使用: 3,设计目标为:轻量化.高抽象度.可扩展性.模块任意替换.清晰简洁易用(易懂.代码量要少[没必要码农]): **NetDevelo

iOS控制反转(IoC)与依赖注入(DI)的实现

背景 最近接触了一段时间的SpringMVC,对其控制反转(IoC)和依赖注入(DI)印象深刻,此后便一直在思考如何使用OC语言较好的实现这两个功能.Java语言自带的注解特性为IoC和DI带来了极大的方便,要在OC上较好的实现这两个功能,需要一些小小的技巧. 控制反转和依赖注入 控制反转 简单来说,将一个类对象的创建由手动new方式改为从IOC容器内获取,就是一种控制反转,例如我们现在要创建一个ClassA类,则常规方法为 ClassA *a = [ClassA new]; 如果使用控制反转,

Atitit.ioc&#160;动态配置文件guice&#160;设计原理

Atitit.ioc 动态配置文件guice 设计原理 1. Bat启动时注入配置文件1 2. ioc调用1 3. Ioc 分发器 配合 apche  MethodUtils.invokeStaticMethod2 1. Bat启动时注入配置文件 SET JAVA_HOME=C:\Program Files\Java\jdk1.8.0_71 set  RESIN-HOME=c:\resin-4.0.22 set classpath=%classpath%;%RESIN-HOME%\lib\jas

Spring IoC/DI

前言 假设项目层次划分包括logic层和dao层,logic层调用dao层完成业务逻辑,dao层一般与数据库交互.定义两个组件,TestLogic和TestDao,分别操作接口ILogic和IDao,这样程序开发时需要考虑怎样管理这两个组件. 传统方式 这种方式中,当TestLogic组件需要调用TestDao组件时,直接使用关键字new IDao testDao = new TestDao(); 这种方式简单直观,但造成了对外部组件的严重依赖,程序高度耦合,效率低下.当项目需要更换组件时需要修

Spring技术内幕——Spring Framework的IOC容器实现(二)

三.IOC容器的初始化过程 IOC容器的初始化时由前面介绍的refresh方法来启动的,这个方法标志着IOC容器的正式启动.这个启动包括BeanDefinition的Resource定位.载入和注册.下面我们将详细分析这三个实现过程,Spring把这三个过程分开,并使用不同的模块来完成,通过这样的设计让用户更加灵活的这三个过程进行剪裁和扩展,定义出最适合自己的IOC容器的初始化过程. 第一个过程: Resource定位过程,是指BeanDefinition的资源定位,他由ResourceLoad

手把手教你实现Spring ioc

手把手教你实现Spring ioc "Don't call us, we'll call you(不要联系我,我会主动联系你)" 这是好莱坞很经典的一句话,应用在ioc(控制反转)领域,发现理解起来相得益彰--你作为用户不需要控制业务实体的生成,交给我容器来控制,这就是控制反转.不过,这样理解起来也有点麻烦,套用面向对象大师Martin Fowler的说法更为贴切: "Dependency Inversion(依赖注入)" 当容器中所有的实体bean 都被管理起来的

好记性不如烂笔头83-spring3学习(4)-spring的BeanFactory(IoC容器)

我们一般把BeanFactory叫做IoC容器,叫ApplicationContext 为应用上下文(或者Spring容器) BeanFactory是spring框架的核心,实现依赖注入[使个组件的依赖关系从代码中独立出来,使用配置文件即可实现这种依赖关系]和bean声明周期的管理 . BeanFactory[IoC容器]启动过程:分为两个阶段,一个是容器启动阶段,另外一个是Bean实例化阶段 容器启动阶段:加载配置 -–> 分析配置信息 -–>装备到BeanDefinition -–>

Spring笔记(二):Ioc 之注入与装配

一.Spring依赖注入的原理 二.依赖注入的实现 (一)对象的注入 1.简单属性注入 1)源代码 package main.java.com.spring.ioc.base.dao.impl; import main.java.com.spring.ioc.base.dao.PersonDao; /** * * PersonDiDaoImpl * @title * @desc * @author SAM-SHO * @Dec 28, 2014 */ public class PersonDiD

浅谈Spring(二)IOC原理

一.引言 我们都知道,在采用面向对象方法设计的软件系统中,它的底层实现都是由N个对象组成的,所有的对象通过彼此的合作,最终实现系统的业务逻辑.举例:如果我们打开机械式手表的后盖,就会发现其是由N个齿轮组成,各个齿轮分别带动时针.分针和秒针顺时针旋转,从而在表盘上产生正确的时间.在这样的齿轮组中,如果有一个齿轮出了问题,就可能会影响到整个齿轮组的正常运转.齿轮组中齿轮之间的啮合关系,与软件系统中对象之间的耦合关系非常相似.对象之间的耦合关系是无法避免的,也是必要的,这是协同工作的基础.现在,伴随着