控制反转(Inversion of Control,即IoC):把对象的创建、初始化、销毁等工作交给框架,是框架的重要特征
。并非面向对象编程的术语。控制反转包括依赖注入
和依赖查找
。
由于开发时需要创建很多对象,我们需要找个集合来存储,有Map和List供选择,有查找需求就选Map。所以应用加载时,创建一个Map,用于存放三层对象,将Map称之为容器
。
工厂就是负责帮我们从容器中获取指定对象的类
。使获取对象的方式发生了改变。
①之前我们获取对象时,采用new的方式,是主动的
。
②现在获取对象时,向工厂要对象,工厂为我们查找或创建对象,是被动的
。
削弱计算机程序的耦合,解除代码中的依赖关系。
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!-- 把对象的创建交给spring来管理 id代表唯一标识 class代表类的全限定名(包名+类名) --> <bean id="h" class="com.gql.HelloWord"></bean> </beans> 复制代码
package com.gql; public class HelloWord { /* * 方法说明: * say方法输出Hello Word! */ public void say(){ System.out.println("Hello Word!"); } } 复制代码
package com.gql; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; /** * 类说明: * 测试使用Spring框架 * @guoqianliang1998. */ public class HelloWordDemo { @Test public void test1(){ HelloWord h = new HelloWord(); h.say(); } @Test public void test2(){ //启动Spring容器,读取src下.xml文件中的信息 ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml"); //利用Spring容器创建对象 HelloWord h = (HelloWord)ac.getBean("h"); h.say(); } } 复制代码