Spring学习笔记(二)IOC详解
来源:互联网 发布:网络牛牛赌博几率 编辑:程序博客网 时间:2024/05/29 13:22
一:spring ioc 简介
IOC(控制反转:Inverse of Control ),又称作依赖注入,是一种重要的面向对象编程的法则来削减计算机程
序的耦合问题,也是轻量级的Spring 框架的核心
二:spring ioc 实例讲解
假设某公司有个项目需要一个人来做,该项目就是Work类,项目的负责人让张三来做这个工作。
Work类
public class Work {public void work(){ZhangSan z=new ZhangSan();z.doWork();}}
public class ZhangSan {public void doWork(){System.out.println("张三在工作");}}
public class Test {public static void main(String[] args) {Work w=new Work();w.work();}}此时工作能够正常的顺利进行,但是负责人突然要求换人,不让张三在做了,而是让李四负责这个工作,此时我们就要修改Work类的代码,而如果完成这个项目的过程中一直在换人的话我们就需要一直改Work的代码,这样会使得工程变得复杂,费时费力,那是因为 Work类 和完成这个Work的人紧紧的耦合在一起,当需要换人时,Work类也会跟着改变,这时候我们就需要解耦和(这也是设计模式中的设计原则:将不变的事物与会发生改变的事物分离开).
我们将代码修改如下:
首先创建一个Worker接口,要接手这个工作的人都必须实现这个接口
public interface Worker {public void doWork();}
public class ZhangSan implements Worker{public void doWork(){System.out.println("张三在工作");}}
public class LiSi implements Worker{public void doWork(){System.out.println("李四在工作");}}
修改后的Work类,利用了多态的性质,此时的Work类并不需要知道是谁在工作。
public class Work {private Worker worker;public void setWorker(Worker worker){this.worker=worker;}public void work(){worker.doWork();}}
public class Test {public static void main(String[] args) {ZhangSan zs=new ZhangSan();LiSi ls=new LiSi();Work wk=new Work();//让张三来工作wk.setWorker(zs);wk.work();//让李四来工作wk.setWorker(ls);wk.work();}}这就成功的将耦合解开,换人工作的时候我们不需要再改动Work类的代码。
那么我们如何用Spring来完成这项工作呢?
很简单,首先在xml文件里进行配置
<bean name="zs" class="com.zhu.test.ZhangSan"></bean><bean name="ls" class="com.zhu.test.LiSi"></bean><bean name="work" class="com.zhu.test.Work"> //这里的name属性值一定要与Work类里的worker一样 此时是张三在工作,当需要李四工作的时候只需要将 ref属性值改为 ls 即可 <property name="worker" ref="zs"> </property></bean>
public class Test {public static void main(String[] args) {ApplicationContext ac=new ClassPathXmlApplicationContext("beans.xml");Work work=(Work)ac.getBean("work");work.work();}}
阅读全文
0 0
- Spring学习笔记(二)IOC详解
- Spring IoC学习笔记(二)
- Spring学习笔记(二)IOC和AOP
- Spring学习笔记二之IOC(xml实现)
- Spring学习笔记(二)IOC注入方式
- Spring学习笔记(二) IoC容器与Bean
- Spring学习笔记(二)-----IOC之XML
- Spring IOC 学习笔记(二) BeanFactory
- Spring学习笔记---2-IOC详解
- Spring Ioc学习(二)
- 深入浅出Spring(二) IoC详解
- 深入浅出Spring(二) IoC详解
- (二)Spring详解——Ioc
- Spring详解(二)------IOC控制反转
- Spring揭秘 学习笔记一 (Spring的IoC容器 二)
- Spring IoC学习笔记
- Spring IoC学习笔记
- Spring IOC学习笔记
- 物联网产业链
- 简单LinuxC程序关于排序问题(冒泡排序与选择排序)
- java继承[详细]
- vs2010中的c语言sqrt编译不通过
- 基于Apache2.2配置虚拟域名访问
- Spring学习笔记(二)IOC详解
- 麦瘟病(wheat blast)是什么鬼
- Atom编辑器
- postman学习
- 消息处理之performSelector
- 拨盘Demo大赛,获奖公布-20170710
- spring boot项目,Elasticsearch的一种使用方式
- hibernate数据库方言
- 自定义弹窗跳到app商店评价进行评分