Spring 是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。
Spring是个粘合剂。
今天我要先讲控制反转IoC。
控制反转——Spring通过一种称作控制反转(IoC)的技术促进了松耦合。当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你可以任务IoC与JNDI相反——不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。
IoC——可以叫控制反转或依赖注入(DI),控制反转的反转——控制权在配置文件中,DI是由代码转容器
何谓控制反转(IoC=Inversion of Control),何谓依赖注入(DI=Dependency Injection)?对于初次接触这些概念的初学者,不免会一头雾水。IT界不亏是哄抢眼球的行业,每个新出现的词汇都如此迷离。IoC,用白话来讲,就是由容器控制程序各个部分之间的关系,而非传统实现中,由程序代码直接控制。这也就是所谓“控制反转”的概念所在:控制权由应用代码中转到了外部容器,控制权的转移,就是所谓反转。
依赖注入的目标并非为软件系统带来更多的功能,而是为了提升组件重用的概率,并为系统搭建一个灵活、可扩展的平台。
IoC实例:
编写程序模仿计算机连接U盘或移动硬盘存储数据的过程。
因为计算机要和不同的USB设备连接,我们先来编写计算机的USB接口代码,代码如下:
IUsb.java
编写U盘实现类:UsbDisk.java
编写移动硬盘实现类:PortableDisk.java
编写计算机类:Computer.java
编写配置文件:applicationContext.xml
编写测试方法:在类TestDI中写
输出结果:
U盘输出:Hello World
修改配置文件,把计算机类中ref指向portableDisk:
再次运行输出结果为:
移动硬盘输出:HelloWorld