您的位置:程序门 -> java -> j2ee / ejb / jms



ioc容器到底是什么


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


ioc容器到底是什么
发表于:2008-01-25 10:24:54 楼主
大多书上都说ioc容器怎么怎么用,ioc容器能干什么
但这个ioc容器是什么却没有说明...

今天google了几页也是都说ioc能干什么
qq群里也问了,还被他人给bs了(郁闷,bs人很爽吗?)

所以来求助,想了解一下这个ioc容器是什么,怎么理解

谢谢
发表于:2008-01-25 10:28:501楼 得分:0
同问,关注
友情up
发表于:2008-01-25 11:08:032楼 得分:0
ioc特性介绍:
http://www.jdon.com/aopdesign/iocimpls.htm

ioc的机制是:---处理类之间和接口之间或类与接口之间关联关系,根据好莱坞原则,调用着与被调用者的主次关系,实现开关的原则.类之间可以很好(甚至)可以完全避免耦合,一个类只负责自己逻辑功能代码,如果想调用其它类告诉ioc容器去做(一种比较好的方式是根据配置文件来设定复杂关系),而不需要在代码上过多的编写.

ioc容器(jdon框架)
想研究明白,,就需要去   jdon、
发表于:2008-01-25 11:14:093楼 得分:0
spring   的核心
发表于:2008-01-25 11:21:174楼 得分:0
我也不懂,说说个人理解.理解能力有限,希望各位大虾别拿砖拍我.

spring里的ioc又叫控制反转,也就是说通过配置文件在web工程启动时,将需要的类或接口的对象加载,
并在需要使用时调用.
发表于:2008-01-25 19:35:565楼 得分:0
ioc就是inversion   of   control,控制反转。在java开发中,ioc意味着将你设计好的类交给系统去控制,而不是在你的类内部控制。这称为控制反转。
发表于:2008-01-30 02:42:506楼 得分:0
不是真正的反转哟
发表于:2008-01-30 09:36:277楼 得分:0
spring   的核心:控制反转
发表于:2008-01-30 20:52:468楼 得分:0
spring就是一个ioc容器   负责orm

上下层次之间没多大关系,又spring框架通过spring配置文件构造对象注入到相关的类里面去,实际上是spring负责对象实例化,并将有关系的对象注入到对象内。前面说注入到类内比较容易理解一点。
发表于:2008-01-30 20:54:199楼 得分:0
我发现,我上面用文字表达的内容估计看的人要骂人。

这个东西还是面对面,代码对代码,一步一步口头说明好点。     楼主祝你好运。
发表于:2008-01-30 21:10:5210楼 得分:0
ioc是一种机制,一种原理——spring称它为控制反转

至于你说得你说得ioc容器,是不是可以理解为ioc实现好些?
发表于:2008-01-31 09:21:0711楼 得分:0
一句话主要是为了解耦类之间的依赖关系~~!
发表于:2008-02-13 14:37:3312楼 得分:0
依赖注入和反转控制
是spring的核心

1.java实例的调用者创建被调用的java实例,调用者直接new关键字创建被调用实例,程序高度耦合
2.调用者无需关心被调用者的具体实现过程,只需要找到符合某种标准的实例,即可使用,此时调用的代码面向接口编程,可以让调用者和被调用者解耦合,是是工厂模式大量使用的原因.但是调用者需要自己定位工厂,调用者和工厂耦合在一起
3.最理想的情况,程序完全无需要理会被调用者的实现,也无须定位工厂,是最好的解耦合的方法,实例之间的依赖关系由容器提供.
也就是靠spring来管理,用配制文件来管理实例直接的关系,如果遇到某个需要修改的需求,只需要修改相应的配制文件,而不需要修改每个类中对相应需要修改类的方法的实例话


现在开始面向接口编程,减少各个层之间的耦合
先创建一个接口
再创建一个类继承接口
在spring的xml对相应的类进行配制
//这是struts+spring的例子,随便写的
  底下的ref指向配制文件中另外一个声明类
<bean   name="/login"
class="com.ccsee.em.struts.action.login.userloginaction">
<property   name="users"   ref="userinfoservice"   />
<property   name="popedoms"   ref="popedomservice"   />
</bean>
<bean   id="userinfoservice"
class="com.ccsee.em.service.impl.userinfoserviceimpl">
<property   name="userdao"   ref="userdao"   />
</bean>
这是action中的代码,初始话相应的接口,userinfoservice   是一个接口,通过配制文件指向相应的类
private   userinfoservice   users;

public   void   setusers(userinfoservice   users)   {
this.users   =   users;
}
以前下的时候要想使用,service层中的userinfoservice的方法就必须,先初始话
userinfoservice   users   =   new   userinfoserviceimpl();
才能使用users.***方法,这样如果userinfoserviceimpl中的方法需要更改,你需要改动的地方就是,程序中所有userinfoservice   users   =   new   userinfoserviceimpl();

都需要修改

现在 private   userinfoservice   users;

public   void   setusers(userinfoservice   users)   {
this.users   =   users;
}
这是设值注入,只要在相应的类和配制文件中进行初始话,就把2个类连接起来,
说的乱七八糟,自己学spring一个月,也就懂这些,
一个设值注入一个构造注入,通过配制文件来连接各层之间的关系
spring不止这些,对一些权限控制和事务控制有自己的处理方法,不知道我说的对不对
初学,个人认为spring的ioc在解耦合方面发挥重要作用吧,其他的不清楚,慢满研究.
自己转晕了,一起学习

发表于:2008-02-13 14:55:0113楼 得分:0
要想了解   依赖注入和反转控制,建议看一下设计模式.这样会清楚些.
发表于:2008-02-13 18:16:2114楼 得分:0
在百度中搜索"向依赖关系宣战";
这是一篇非常不错的文章。


快速检索

最新资讯
热门点击