日期:2014-05-20  浏览次数:20827 次

IOC容器到底是什么
大多书上都说IOC容器怎么怎么用,IOC容器能干什么
但这个IOC容器是什么却没有说明...

今天GOOGLE了几页也是都说IOC能干什么
QQ群里也问了,还被他人给BS了(郁闷,BS人很爽吗?)

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

谢谢

------解决方案--------------------
IoC就是Inversion of Control,控制反转。在Java开发中,IoC意味着将你设计好的类交给系统去控制,而不是在你的类内部控制。这称为控制反转。
------解决方案--------------------
依赖注入和反转控制
是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在解耦合方面发挥重要作用吧,其他的不清楚,慢满研究.
自己转晕了,一起学习