IoC就是Inversion of Control,控制反转。在Java开发中,IoC意味着将你设计好的类交给系统去控制,而不是在你的类内部控制。这称为控制反转。
IOC也是利用JAVA的反射机制,IOC注重的是代码关系之间的无侵入性,具体来说spring更注意这个特点,就是说要将代码之间的关系隔离到代码外部,在xml文件中进行配置,每当代码结构变更时,双方的代码都不要被改动即可实现移植.
"如果你需要一个东西,那么不是你自己去取,而是发个指令,有人会送给你","站着别动,我来找你".
这两句话什么意思呢,比方说
public UserServiceImpl{
UserDao userDao;
setUserDao(UserDao userDao){
this.userDao = userDao;
}
}
这个userDao,不需要UserServiceImpl自己去创建这个UserDao对象,由IOC容器主动根据UserServiceImpl提供的setUserDao将UserDao实现的对象赋给userDao,这种用set函数设值的方式有叫做type3,用构造器设值叫做type2,用接口设值成为type1.
那么怎么才能在运行时期把userDao设置上去呢,答案是通过反射机制,在运行时,通过反射反射出UserDao的实现类的对象,并通过反射得到UserServiceImpl的setUserDao方法,将刚才反射得到的UserDao实现类的对象传给setUserDao方法,就完成了设值工作。这些设值的工作是在加载spring文件构造Bean工厂的时候就完成的.所以启动完毕,每个对象中的需要注射的属性是有值的.就是这样的达到容器管理Bean的效果.
分享到:
相关推荐
spring ioc指的是控制反转,IOC容器负责实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。交由Spring容器统一进行管理,从而实现松耦合
Spring框架系列(7) - Spring IOC实现原理详解之IOC初始化流程.doc
Spring容器的原理 其实就是通过解析xml文件 通过反射创建出我们所需要的bean 再将这些bean挨个放到集合中 然后对外提供一个getBean 方法 以便我们获得这bean
Spring框架系列(6) - Spring IOC实现原理详解之IOC体系结构设计.doc
以excel导入为例子,看看springIoc是什么原理,如何自己写一个
Spring框架系列(8) - Spring IOC实现原理详解之Bean实例化(生命周期,循环依赖等).doc
根据自己所了解的一些知识,以比较简单的方式实现一下IOC模式(包括反射和XML文件读取数据访问中间件,和一些网上摘录的资料文本)供大家学习研究之用.本人MSN:xia_xiujun@hotmail.com 欢迎一起加油提高(本模块只用研究...
spring ioc容器初始化流程图 spring ioc容器依赖注入流程图 spring aop实现原理流程图
主要介绍了简单实现Spring的IOC原理详解,具有一定借鉴价值,需要的朋友可以参考下。
Spring实现原理、IoC容器的优点及在Eclipse 中创建Spring的 Web应用
此项目是对spring ioc原理的简单实践,主要是对xml配置的解析完成依赖注入;此项目依赖于 Dom4j 、common-beanutils、common-logging、jaxen的jar包。希望可以帮助大家更轻易的理解spring ioc部分原理
这是一个C#实现的简单IOC例子,用来练习IOC实现原理,了解容器机制
ioc原理应用,简单实现BufferKnife注解功能
体验Spring中的IoC的实现原理.doc
3. 如果一切正常,你会看到使用Java集合、XML API,以及反射技术模拟Spring的get注入和自定义的IoC容器实现的例子--get注入了Hello类和一个MyFrame类,并且实例化之后可以运行! 4. 看一下testDemoSpringDI()方法,...
自己动手实现IOC容器的demo,帮助理解和学习spring IOC容器的基本原理和实现,适合学过或者用过spring的java玩家
对所有j2ee框架的原理做了解析,dwr的实现原理 hibernate缓存的配置 ioc实现原理 javascript原型 javacript中继承 jboss ibatis 解决延迟加载等等本人近段时间的呕心之做
我们从一个简单的容器开始,一步步的重构,最后实现一个基本的Spring框架的雏形,为了帮助我们更加深入的理解Spring的IoC的原理和源码。 详细内容见博文: 【SSH进阶之路】一步步重构容器实现Spring的IoC——从一个...
ioc原理应用,简单实现BufferKnife注解功能
IOC原理的基本实现,使用的是donetcode控制台应用程序,VS2017。比较简单易懂,没有多余代码,可以帮助需要的人理解IOC原理。