一、控制反转介绍
(1)控制反转的概念
控制反转(Inversion of Control,即IoC):把对象的创建、初始化、销毁等工作交给框架,是框架的重要特征
。并非面向对象编程的术语。控制反转包括依赖注入
和依赖查找
。
(2)容器
由于开发时需要创建很多对象,我们需要找个集合来存储,有Map和List供选择,有查找需求就选Map。所以应用加载时,创建一个Map,用于存放三层对象,将Map称之为容器
。
(3)工厂
工厂就是负责帮我们从容器中获取指定对象的类
。使获取对象的方式发生了改变。
①之前我们获取对象时,采用new的方式,是主动的
。
②现在获取对象时,向工厂要对象,工厂为我们查找或创建对象,是被动的
。
(4)控制反转IoC的作用
削弱计算机程序的耦合,解除代码中的依赖关系。
二、spring基于XML的IoC环境搭建
(1)applicationContext.xml
<?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> 复制代码
(2)HelloWord.java
package com.gql;
public class HelloWord {
/*
* 方法说明:
* say方法输出Hello Word!
*/
public void say(){
System.out.println("Hello Word!");
}
} 复制代码
(3)HelloWordDemo
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();
}
} 复制代码
推荐阅读:
【备战春招系列】ZooKeeper灵魂28问,教你如何搞定面试官!
更多技术文章和面试真题可以关注微信公众号:Java程序员聚集地。