Spring 控制反转
来源:互联网 发布:开博尔网络机顶盒价格 编辑:程序博客网 时间:2024/05/29 11:50
控制反转是一种降低对象之间耦合关系的方法。其核心是在IOC的作用下改变以往的上层调用下层接口,调用者依赖被调用者的情况,通过注入一个实例化对象的方式避免对象的显示调用,实现调用者决定被调用者,从而完成控制反转。
IOC机制能够提高系统可扩展性,仅以工厂模式为例。假设需要生产绿茶和红茶,对其进行管理。开始阶段只生产绿茶和红茶两种产品。为了满足系统的可扩展性采用了工厂方法模式。创建了抽象Abstraction对类进行管理。利用工厂类中的gettea方法创建调用对象。当需要替换产品时只需改动工厂类中的方法以此达到对扩展性的要求。
spring容器根据配置文件来创建调用者对象,把被调用者对象的实例化对象通过构造函数或set方法的形式注入到调用者对象中。
配置文件:
sale类
此时spring容器创建Sale对象,根据配置文件就会创建一个BlueTea的对象,作为sale构造函数的参数。需要变动时只需更改配置文件即可。
创建sale对象:
优点:不需关注对象创建过程;便于单元测试
缺点:反射机制影响性能;创建对象的流程变复杂。
IOC机制能够提高系统可扩展性,仅以工厂模式为例。假设需要生产绿茶和红茶,对其进行管理。开始阶段只生产绿茶和红茶两种产品。为了满足系统的可扩展性采用了工厂方法模式。创建了抽象Abstraction对类进行管理。利用工厂类中的gettea方法创建调用对象。当需要替换产品时只需改动工厂类中的方法以此达到对扩展性的要求。
使用了工厂模式能够把程序中可变的部分转移到工厂中进行实现但是在需要出现很多类的时候就需要频繁更改工厂中的代码。违反开闭原则。这是可以用IOC解决这一问题。
所谓的IOC实现就是在调用者和工厂之间加入IOC部分。
spring容器根据配置文件来创建调用者对象,把被调用者对象的实例化对象通过构造函数或set方法的形式注入到调用者对象中。
配置文件:
<beans> <beans id="sale" class="Sale" single="false"> <constructor-arg> <ref bean="tea"/> </constructor-arg> <bean id="tea" class="BlueTea" singleton="false"> </beans>
sale类
class sale{ private Abstraction public Sale(Abstraction t){ this.t=t } }
此时spring容器创建Sale对象,根据配置文件就会创建一个BlueTea的对象,作为sale构造函数的参数。需要变动时只需更改配置文件即可。
创建sale对象:
ApplicationContext xtx = new FileSystemXMLApplicationContext("配置文件名称"); Sale s =(Sale)ctx.getBean("sale");
优点:不需关注对象创建过程;便于单元测试
缺点:反射机制影响性能;创建对象的流程变复杂。
0 0
- Spring IOC 反转控制
- Spring-----> IOC(控制反转)
- spring之控制反转
- spring的控制反转
- Spring控制反转
- Spring控制反转
- spring之控制反转
- spring 控制反转
- Spring 控制反转
- Spring 控制反转
- Spring - 控制反转IOC
- Spring IoC[控制反转]
- Spring控制反转IOC
- spring 控制反转
- 模拟Spring控制反转
- Spring(一)--控制反转
- Spring的控制反转
- spring的反转控制
- Building a Space Station(POJ_2031)
- PWP 扩展库接口和源码, ext_lib_src
- 第五周项目一三角形类雏形5
- 多态详解
- windows 服务访问共享目录(smb)
- Spring 控制反转
- BestCoder Round#77
- 机器学习实战中遇到的python问题
- POJ 2528
- hdu4786
- 朴素贝叶斯分类
- 如何在gns3上用路由器模拟PC机和交换机
- mybatis注解
- 三个最简单的排序算法:插入、冒泡、选择