目录
一、IOC底层原理
1.什么是IOC
通过控制反转(Inversion of Control,缩写为IOC),对象在被创建的时候,由一个调控系统内所有对象的外界实体将其所依赖的对象的引用传递给它。也可以说,依赖被注入到对象中。
1)控制反转,把对象的创建和对象之间调用的过程,交给Spring进行管理
2)使用IOC目的:降低耦合度
3)入门案例即为IOC的实现(入门案例:【网址】)
2.IOC底层原理
(1)XML解析 + 工厂设计模式 + 反射(令耦合度尽可能的降低到最小)
通过画图来讲解IOC底层原理:
二、IOC接口(BeanFanctory)
- IOC思想基于IOC容器完成,IOC容器底层就是对象工厂
- Spring提供IOC容器实现的两种方式(两个接口,两个接口均可加载XML文件并且获取配置创建的对象):
(1)BeanFactory:IOC容器基本实现方式,是Spring内部使用的接口,不提供开发人员使用。
特点:加载配置文件时不会创建对象,而是在获取对象或者使用对象时才去创建对象。
(2)ApplicationContext:BeanFactory接口的子接口,提供更多更强大的功能,一般面向开发人员使用。
特点:加载配置文件时,直接创建对象。
ApplicationContext中有两个主要的实现类:
1. FileSystemXmlApplicationContext:括号中时配置文件的全路径。
2. ClassPathXmlApplicationContext:括号中直接配置文件名。
三、IOC操作Bean管理(基于XML)
Bean管理(两个操作):
(1)Spring创建对象
(2)Spring属性注入
1.创建对象
a. 在Spring配置文件中,使用bean标签,标签里面添加对应的属性,就可以实现对象创建。
b. 在bean标签中有很多属性,常见的有:
* id 属性:设置类的唯一标识(并不是直接指对象名称);
* Class属性 :类全路径(包类路径);
c. 创建对象的时候,默认执行无参构造器方法(若使用有参构造器,且未构成无参构造器,此时无参构造器被覆盖,所以常规获取对象方式报错)
2.注入属性
(1)DI:依赖注入
是AOC的一种具体实现,必须在创建对象的基础之上完成。
* 第一种注入方式:set方法注入
i.
/**
* 演示使用set方法进行属性注入
*/
public class Book {
//创建属性
private String bname;
private String bauthor;
//创建属性对应的set方式注入
public void setBname(String bname) {
this.bname = bname;
}
public void setBauthor(String bauthor) {
this.bauthor = bauthor;
}
public void TestBook(){
System.out.println(bname + " :: "+bauthor);
}
}
ii.在Spring配置文件中配置对象创建,配置属性注入
<bean id="Book" class="