文章目录
一、Spring的loC容器
- TheSpring Container :Spring IoC容器可以理解为工厂,可以使用工厂模式
- 上面的箭头 POJO指的是要创建的对象
- 左侧的箭头可以理解为配置文件(xml、注解)——>中间的IoC容器会解析配置文件——>解析后,把POJO对象放入工厂中——>也就是放入 IoC容器中——>最后用户使用时从IoC容器获取对象
Spring 容器是 Spring 框架的核心。容器将创建对象,把它们连接在一起,配置它们,并管理他们的整个生命周期从创建到销毁。
IOC 容器具有依赖注入功能的容器,它可以创建对象,IOC 容器负责实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。通常new一个实例,控制权由程序员控制,而"控制反转"是指new实例工作不由程序员来做而是交给Spring容器来做。
IOC的概念
IoC: Inverse Of Control 控制反转
tomcat容器,过滤器、servlet都运用了IOC的原理
-
工厂中创建了对象,放入缓存中
-
之前的方式: 需要对象 act.getBean(“对象的id”)—>对象
-
工厂(IoC):
1.之前的方式:bean配置:假设A 对象需要获取B对象。 a(){ new B()}:控制器在A,A创建B对象
2.改进的方式:a(){factory.create()} :控制权转移,造出B对象 a主动通知工厂
-
3.spring最终使用的方式:IOC控制反转
A{
private B b ;
}
IoC容器含有B对象, 发现A需要B的对象,将B的对象注入给A
(IOC控制反转,也被称为好莱坞原则:从演员–>导演–>简历,转变你们为不用找我,你们的信息我都有,当我需要演员时候,我会主动找你。)
DI是什么?
DI可以理解为IOC控制反转的实现,也就是依赖注入的实现。IOC控制反转只是一种依赖注入的理论。
背景:IOC实现过程中,很复杂,很难实现。 有些概念没有交代的特别请求。
Thoughsworks的Martin Flower提出了几个问题控制权是什么?如何反转?反转什么?
"控制反转"是指new实例工作不由程序员来做而是交给Spring容器来做
实现过程中DI: 依赖注入
依赖注入的3种实现方式?
1.set注入(推荐使用)
<bean id="pb" class="com.dyit.entity.Publisher">
<property name="id" value="1"/>
<property name="name" value="工人出版社"/>
<property name="loc" value="长安区"/>
</bean>
2.构造方法注入
public class Author {
private Integer id;
private String name;
private String address;
public Author() {
}
public Author(String name, String address) {
this.name = name;
this.address = address;
}
@Override
public String toString() {
return "Author [id=" + id + ", name=" + name + ", address=" + address + "]";
}
}
<bean id="au" class