Spring核心容器详解:BeanFactory与ApplicationContext

需积分: 9 0 下载量 161 浏览量 更新于2024-08-05 收藏 34KB MD 举报
"这篇文档是关于Spring核心容器的个人学习笔记,主要记录了Spring框架中的BeanFactory和ApplicationContext的使用,以及XML配置文件的基础知识。" 在Spring框架中,核心容器是整个框架的基础,它负责管理和控制对象的生命周期,即Bean的创建、初始化、使用和销毁。主要有两个重要的接口,它们是BeanFactory和ApplicationContext。 ### BeanFactory BeanFactory是Spring最基础的IoC(Inversion of Control,控制反转)容器。它作为一个管理Bean的工厂,可以按需加载和实例化Bean。BeanFactory的主要职责包括: 1. 加载配置:通过`ClassPathXmlApplicationContext`等类,可以从类路径下的XML配置文件加载Bean定义。 2. 管理Bean:维护Bean的集合,根据Bean的ID和名称进行查找、获取和管理。 3. 延迟初始化:BeanFactory支持懒加载,即只有在真正需要时才会实例化Bean。 示例代码展示了如何使用`ClassPathXmlApplicationContext`创建BeanFactory: ```java // 1. 加载bean工厂 BeanFactory beanFactory = new ClassPathXmlApplicationContext("app*.xml"); ``` 在这个例子中,`app*.xml`表示所有匹配该模式的XML配置文件都会被加载。 ### ApplicationContext ApplicationContext是BeanFactory的子接口,通常被称为应用上下文,提供了更高级的功能,如: 1. 国际化支持:可以处理不同语言和区域的资源文件。 2. 资源访问:能够访问文件系统、网络或数据库中的资源。 3. 事件传播:支持发布和订阅事件模型,允许Bean之间进行通信。 4. AOP支持:提供面向切面编程的能力,方便实现日志、事务等跨切面的功能。 ApplicationContext的创建方式有两种: - 通过ClassPathXmlApplicationContext创建:这是最常见的创建方式,从类路径下加载配置文件。 ```java // 1. 加载bean工厂 ApplicationContext applicationContext = new ClassPathXmlApplicationContext("app1.xml"); ``` - 通过FileSystemXmlApplicationContext创建:这种方式从文件系统的绝对路径加载配置文件,灵活性较差。 ```java // 1. 加载bean工厂 ApplicationContext applicationContext = new FileSystemXmlApplicationContext(String configLocation); ``` ### XML配置信息 Spring中的Bean定义通常采用XML文件进行配置。基本的XML结构如下: ```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"> <!-- Bean的定义 --> <bean id="exampleBean" class="com.example.ExampleBean"> <!-- 属性注入 --> <property name="name" value="Example"/> </bean> </beans> ``` 在这个XML配置中,`<beans>`元素是根元素,`<bean>`元素定义了一个具体的Bean,包括其ID(`id`属性)和类名(`class`属性)。`<property>`元素用于注入Bean的属性值。 Spring的核心容器通过BeanFactory和ApplicationContext实现了对象的控制反转和依赖注入,而XML配置文件则提供了声明式的方式来定义和管理这些对象。这种灵活的配置方式使得Spring能够适应各种复杂的应用场景,成为了Java企业级开发的重要工具。