IoC控制反转模式(也称作依赖性注入DI)是Spring的核心,他的基本概念是:不创建对象,但是描述创建它们的方式。在代码中不直接与对象和服务连接,但在配置文件中描述哪一个组件需要哪一项服务。Spring中的IoC容器负责将这些联系在一起。在典型的 IOC 场景中,容器创建了所有对象,并设置必要的属性将它们连接在一起,由容器来决定什么时间调用方法。
控制反转(loc):控制权的转移。
通过例子来理解一下:
假如我要回家,Dao层可以选择多种方法
业务层,如果选择坐车,那么:
在GoWhere类的设计中,回家的需求依赖于实际的ByBus对象,如果要将方法改为骑自行车则必须要修改Go这个类。
DI----依赖倒转原则是:程序不应该依赖于实现,而是要依赖于抽象接口。
所以如果我们在设计系统的过程中,对业务进行抽象,抽出一个接口:
然后ByBus和Cycle类都实现Ivehicle接口,在此就省略不贴代码了。
下面是重新设计GoWhere类,回家的方法可设计为依赖Ivehicle接口,而不依赖于实际的ByBus和Cycle。
按照这样的设计方式,GoWhere类是可以重用的。这样,在表示层,如果选择坐车回家,则可以写为:
如果选择骑车回家,则写为:
由此可以看出,无论底层的存储如何变化,对于GoWhere类来说都不用修改。修改的只是客户端。
我们可以编写一个配置文件,在配置文件中对所需的对象进行配置,这样的话,连客户端的代码都不用修改,就可以方便的更换方法。
其实,Spring的核心容器IOC就是提供的这样对象的配置管理功能。
Spring中IOC的基本概念是:基于OO设计原则的TheHollywood Principle:Don’t call us, we’ll call you(别找我,我会来找你的)。程序中各个组件之间的关系,不由程序代码直接操控,而由容器控制。控制权由应用代码中转到了外部容器,即所谓的反转。也就是说对象的控制权转交给spring容器。
下篇文章介绍Spring中IOC的使用方法,看看上文中的例子用Spring管理后会有什么变化。
分享到:
相关推荐
Spring核心学习IOC部分:从最简单的BeanFactory开始一步步完善类似Spring的功能
Spring核心-IOC(3)
Spring 5.2.9的IOC核心jar包分享给大家
spring-core:核心模块 依赖注入IOC和DI的最基本实现 spring-beans:Bean工厂与装配 spring-context:上下文,即IOC容器 spring-context-support:对IOC的扩展,以及IOC子容器 spring-context-indexer:类管理组件和...
配置Spring的核心容器IOC
1.spring入门学习 2.spring的ioc容器原理
02_spring核心技术-IOC.ppt
综合运用Java反射、泛型和注解实现的类似Spring的核心注入
什么是spring,spring核心,spring优点,spring体系结构, 入门案例,DI基础,核心API,文档内附代码
主要介绍了Spring核心容器IOC原理实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
Spring的IoC容器的详细介绍,想了解Spring核心的人不可不看~
springIOC原理,深入解剖spring核心ioc技术
Spring的核心:IOC与AOP。IOC是控制反转或依赖注入,AOP是面向切面编程。
本文主要介绍了Spring核心IoC和AOP的相关知识。具有很好的参考价值,下面跟着小编一起来看下吧
Spring IoC简单示例,使用XML配置依赖注入,使用Maven构建项目 Maven使用及Spring IoC教程参考我的Blog:http://blog.csdn.net/boyazuo
本文深入探讨了Spring框架中IoC容器的源码机制,涵盖了容器的初始化、Bean工厂的实例化、Bean定义的读取及Spring Bean的生命周期管理。通过精细的分析,本文揭示了AnnotationConfigApplicationContext的实例化过程,...
这是一本专注讲解Spring IOC最核心的知识的电子书,从简单的使用案例到深度解析源码,只讲Spring IOC最核心的知识,让你知其然,更知其所以然。涵盖:AnnotationConfigApplicationContext、组件添加、组件赋值、组件...
SpringIOC的具体实现代码可以配合着博客做参考 这个Demo中主要使用的是注解配置
Spring入门级教程,从零开始教你认识Spring,了解Spring,理解Spring的两大核心IoC和AOP,教你如何使用Spring进行开发
这是spring的核心,贯穿始终。所谓IoC,对于spring框架来说,就是由spring来负责控制对象的生命周期和对象间的关系。这是什么意思呢,举个简单的例子,我们是如何找女朋友的?常见的情况是,我们到处去看哪里有长得...