spring的IoC容器解析
2012-06-24 22:50
316 查看
控制反转(IoC=InversionofControl)IoC,用白话来讲,就是由容器控制程序之间的(依赖)关系,而非传统实现中,由程序代码直接操控。这也就是所谓“控制反转”的概念所在:(依赖)控制权由应用代码中转到了外部容器,控制权的转移,是所谓反转。由spring来负责控制对象的生命周期和对象间的关系。
所有的类都会在spring容器中登记,告诉spring你是个什么东西,你需要什么东西,然后spring会在系统运行到适当的时候,把你要的东西主动给你,同时也把你交给其他需要你的东西。所有的类的创建、销毁都由spring来控制,也就是说控制对象生存周期的不再是引用它的对象,而是spring。对于某个具体的对象而言,以前是它控制其他对象,现在是所有对象都被spring控制,所以这叫控制反转。
DI(DependencyInjection)依赖注入,IoC的一个重点是在系统运行中,动态的向某个对象提供它所需要的其他对象。这一点是通过DI(DependencyInjection,依赖注入)来实现的。比如对象A需要操作数据库,以前我们总是要在A中自己编写代码来获得一个Connection对象,有了spring我们就只需要告诉spring,A中需要一个Connection,至于这个Connection怎么构造,何时构造,A不需要知道。在系统运行时,spring会在适当的时候制造一个Connection,然后像打针一样,注射到A当中,这样就完成了对各个对象之间关系的控制。A需要依赖Connection才能正常运行,而这个Connection是由spring注入到A中的,依赖注入的名字就这么来的,而依赖注入(DI)是通过反射来实现的。
所有的类都会在spring容器中登记,告诉spring你是个什么东西,你需要什么东西,然后spring会在系统运行到适当的时候,把你要的东西主动给你,同时也把你交给其他需要你的东西。所有的类的创建、销毁都由spring来控制,也就是说控制对象生存周期的不再是引用它的对象,而是spring。对于某个具体的对象而言,以前是它控制其他对象,现在是所有对象都被spring控制,所以这叫控制反转。
DI(DependencyInjection)依赖注入,IoC的一个重点是在系统运行中,动态的向某个对象提供它所需要的其他对象。这一点是通过DI(DependencyInjection,依赖注入)来实现的。比如对象A需要操作数据库,以前我们总是要在A中自己编写代码来获得一个Connection对象,有了spring我们就只需要告诉spring,A中需要一个Connection,至于这个Connection怎么构造,何时构造,A不需要知道。在系统运行时,spring会在适当的时候制造一个Connection,然后像打针一样,注射到A当中,这样就完成了对各个对象之间关系的控制。A需要依赖Connection才能正常运行,而这个Connection是由spring注入到A中的,依赖注入的名字就这么来的,而依赖注入(DI)是通过反射来实现的。
publicstaticvoidmain(String[]args){ ApplicationContextcontext=newFileSystemXmlApplicationContext( "applicationContext.xml"); Animalanimal=(Animal)context.getBean("animal"); animal.say(); } //这段代码你一定很熟悉吧,不过还是让我们分析一下它吧,首先是applicationContext.xml <beanid="animal"class="phz.springframework.test.Cat"> <propertyname="name"value="kitty"/> </bean> //他有一个类phz.springframework.test.Cat publicclassCatimplementsAnimal{ privateStringname; publicvoidsay(){ System.out.println("Iam"+name+"!"); } publicvoidsetName(Stringname){ this.name=name; } } //实现了phz.springframework.test.Animal接口 publicinterfaceAnimal{ publicvoidsay(); } //很明显上面的代码输出Iamkitty!
相关文章推荐
- Spring源码解析-BeanDefinition在IOC容器中的注册(三)
- spring ioc容器的学习笔记4---XmlBeanFactory ioc容器的简单设计原理解析
- Spring容器IOC解析及简单实现(转)
- Spring源码-IOC容器(二)-Bean的定位解析注册
- Spring解析(一) IOC容器
- 【Spring源码解析】之IOC容器在Web容器中的启动
- Spring源代码解析(一):IOC容器
- Spring源代码解析(一):IOC容器
- Spring源代码解析(一):IOC容器
- Spring源码解析一:IOC容器设计
- Spring源代码解析(一):IOC容器【转载计文柯书籍】
- Spring源代码解析(一):IOC容器
- Spring源码解读-Spring IoC容器初始化之资源解析
- Spring源代码解析(一):IOC容器
- Spring源码解析-IOC容器的实现-ApplicationContext
- SPRING原理解析-Ioc容器初始化
- Spring源码-IOC容器(十)-@Autowired解析
- Spring源码分析----IOC容器的实现(IoC容器的初始化过程(定位、载入解析、注册))
- Spring IoC源码解析(一)——配置文件加载和IoC容器初始化
- Spring源代码解析第一篇(IOC容器)