IoC容器源码-容器的基本用法

时间:2021-12-18 17:22:08

学习Spring源码,我们应该从哪里学习呢?

提到Spring,你第一时间想到的是什么?无论是在面试中,还是在具体的项目中,IoC和AOP都是避不开的。而IoC更为重要,所以我决定从IoC开始学习。

IoC又如何开始学习呢?

深入理解DIP、IoC、DI以及IoC容器中说得很好:

控制反转(IoC):一种反转流、依赖和接口的方式(DIP的具体实现方式)。
依赖注入(DI):IoC的一种实现方式,用来反转依赖(IoC的具体实现方式)。
IoC容器:依赖注入的框架,用来映射依赖,管理对象创建和生存周期(DI框架)。

现在知道了,要从IoC容器开始学习IoC。

在正式学习Spring容器之前,我们先来复习下Spring最简单的用法。bean是Spring中最核心的东西。Spring相当于一个工厂,而bean就是产品,bean由IOC 容器负责配置、创建、管理。IOC 容器可以看成是 beans 关系的一个集合。下面是一个简单的例子。

定义bean
MyBean .java

public class MyBean {

}

配置文件
MyBean .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-2.5.xsd"
>


<bean id="myBean" class="container.MyBean"></bean>

</beans>

测试类MyBeanTest .java

public class MyBeanTest {
@SuppressWarnings("deprecation")
@Test
public void myBeanTest(){
//需要spring-beans、spring-core的jar
BeanFactory bf = new XmlBeanFactory(new ClassPathResource("MyBean.xml"));
MyBean myBean = (MyBean)bf.getBean("myBean");
}
}

测试结果

八月 02, 2017 3:04:40 下午 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
信息: Loading XML bean definitions from class path resource [MyBean]

Spring提供了两种类型的IoC容器实现:

  1. BeanFactory:IoC 容器的基本实现。
  2. ApplicationContext: 提供了更多的高级特性,是BeanFactory的子接口。

直接使用BeanFactory并不多见,在企业级的应用中更多的会使用ApplicationContext。在以后的文章中会详细介绍它们,这里只是一个简单的例子。

例子很简单,但你知道测试类中短短的一行代码BeanFactory bf = new XmlBeanFactory(new ClassPathResource("MyBean.xml"));做了哪些操作吗?

如果你想了解,就继续向下看吧。