Spring4——IOC控制反转 (概念理解)
Posted cocoomg
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring4——IOC控制反转 (概念理解)相关的知识,希望对你有一定的参考价值。
1.IOC控制反转的概念
IOC(控制反转:Inverse of Control ),又称作 依赖注入,是一种重要的面向对象编程的法则来削减计算机程序的耦合问题,也是轻量级的 Spring 框架的核心。
2. IOC控制反转举例理解
-
实现功能:一个员工(张三)完成测试工作
// 员工1实体:ZhangShang.java public class ZhangSan { public void test(){ System.out.println("张三-测试程序"); } }
// 工作类:JavaWork.java public class JavaWork { public void doTest(){ ZhangSan zhangsan=new ZhangSan(); zhangsan.test(); } }
// 主管测试类:Test.java public class Test { public static void main(String[] args) { JavaWork javaWork=new JavaWork(); javaWork.doTest(); } }
注:此时“测试工作”和“张三员工”完全耦合在一起,如若需要其它人做“测试工作”,那么 javaWork.doTest 方法里面的内容全部要修改, 这时我们可以利用 IOC 的设计思路将控制权反转,将某个人执行这种工作的控制权转交给主管。
.
-
实现功能:将控制权转交给主管
// Tester.java 接口 public interface Tester { public void test(); } // 员工1实体:ZhangSan.java 实现 Tester 接口 public class ZhangSan implements Tester{ public void test(){ System.out.println("张三-测试程序"); } } // 员工2实体:LiSi.java 同样实现 Tester 接口 public class Lisi implements Tester{ public void test(){ System.out.println("李四-测试程序"); } }
// 工作类:JavaWork.java public class JavaWork { private Tester tester; //配置beans.xml 文件中的属性时,name值要和声明值完全对应 public void setTester(Tester tester) { this.tester = tester; } public void doTest(){ tester.test(); } }
// 主管测试类:Test.java public class Test { public static void main(String[] args) { JavaWork javaWork=new JavaWork(); javaWork.setTester(new ZhangSan()); //只需要修改这里的实例化对象就可选择不同的员工来实现工作 javaWork.doTest(); } }
-
利用Spring 来管理
<!-- beans.xml 配置 --> <bean id="zhangsan" class="com.java1234.service.ZhangSan"></bean> <bean id="lisi" class="com.java1234.service.Lisi"></bean> <bean id="javaWork" class="com.java1234.service.JavaWork"> <property name="tester" ref="lisi"></property>
<!-- 依赖注入,利用java的反射机制.设置 tester 的值引用为 lisi,其中name的值要和类里面声明的值完全对应 --> </bean>// 在2的基础上修改:主管测试类:Test2.java public class Test2 { public static void main(String[] args) { ApplicationContext ac=new ClassPathXmlApplicationContext("beans.xml"); JavaWork javaWork=(JavaWork)ac.getBean("javaWork"); javaWork.doTest(); } }
以上是关于Spring4——IOC控制反转 (概念理解)的主要内容,如果未能解决你的问题,请参考以下文章
PHP依赖注入,控制反转,反射Ioc容器和服务提供者各个概念的理解和使用
spring------控制反转(IOC)/依赖注入(DI)
Spring4- 01 - Spring框架简介及官方压缩包目录介绍- Spring IoC 的概念 - Spring hello world环境搭建