此文是【Spring 容器详解】的支节点。
ApplicationContext是BeanFactory的子接口,它在BeanFactory的基础上提供了大量企业级功能。相对于BeanFactory的轻量级设计,ApplicationContext是一个功能丰富的企业级容器,为Spring应用提供了完整的框架支持。
ApplicationContext相对于BeanFactory的企业化增强主要包括:
- 国际化支持
- 事件机制
- 资源访问
- 环境配置
- AOP支持
- 事务管理
- 缓存支持
- 配置属性绑定
下面通过代码示例详细介绍这些企业化增强功能。
1. 国际化支持 (i18n)
- MessageSource接口
- 多语言配置文件支持
- 动态语言切换
Spring国际化支持 允许应用程序根据用户的语言和地区偏好来显示不同的文本内容。
注意:详细的国际化支持在【附录】Spring 国际化支持 基础及应用、【附录】Spring 国际化支持源码部分剖析-待补充 中。
2. 事件机制 (Event System)
- ApplicationEvent和ApplicationListener:事件发布和订阅
- 事件驱动架构:支持松耦合的业务逻辑
- 异步事件处理:提高系统响应性能
Spring 的事件机制是其企业级能力的核心组件之一,基于 观察者模式 实现,允许组件间通过松耦合方式通信。其核心在于事件(Event)、发布者(Publisher)、监听器(Listener) 这三个部分。
注意:详细的事件机制在【附录】Spring 事件机制 基础及应用、【附录】Spring 事件机制源码部分剖析-待补充 中。
3. 资源访问 (Resource Access)
- Resource接口体系
- 多种资源类型支持
- 统一的资源访问方式
Spring 的资源抽象机制是其核心基础设施之一,提供了统一且强大的资源访问模型,彻底解决了 Java 标准
java.net.URL的局限性。注意:详细的资源访问在【附录】Spring 资源访问 基础及应用、【附录】Spring 资源访问源码部分剖析-待补充 中。
4. 环境配置 (Environment)
- Environment接口
- Profile支持
- 配置属性管理
Spring 环境抽象是其配置体系的核心,提供了统一且强大的配置管理机制,完美整合了属性源、Profile 和类型转换等功能。
注意:详细的环境配置在【附录】Spring 环境配置 基础及应用、【附录】Spring 环境配置源码部分剖析-待补充 中。
5. AOP (Aspect-Oriented Programming)
- 面向切面编程
- 注解驱动配置
- 方法拦截和增强
Spring AOP 是 Spring 框架中面向切面编程的实现,它通过代理模式提供了一种优雅的方式来解耦横切关注点。
注意:详细的AOP支持在【附录】Spring AOP支持 基础及应用、【附录】Spring AOP支持源码部分剖析-待补充 中。
6. 事务管理 (Transaction Management)
- 声明式事务
- 事务传播行为
- 事务回滚机制
Spring框架提供了强大而灵活的事务管理功能,这是其核心功能之一。Spring的事务管理抽象层为不同的事务API(如JTA、JDBC、Hibernate、JPA等)提供了一致的编程模型。
注意:详细的事务管理在【附录】Spring 事务管理 基础及应用、【附录】Spring 事务管理源码部分剖析-待补充 中。
7. 缓存支持 (Caching)
- 缓存抽象
- 多种缓存实现
- 缓存注解
Spring 的缓存抽象提供了一套统一且可扩展的缓存操作方式,通过注解驱动和灵活的配置,显著简化了缓存集成。
注意:详细的缓存支持在【附录】Spring 缓存支持 基础及应用、【附录】Spring 缓存支持源码部分剖析-待补充 中。
8. 配置属性绑定 (Configuration Properties)
- 类型安全的配置
- 配置属性验证
- 配置元数据
Spring Boot 的配置属性绑定是其自动化配置的核心机制,通过类型安全的属性绑定极大简化了外部化配置管理。
注意:详细的配置属性绑定在【附录】Spring 配置属性绑定 基础及应用、【附录】Spring 配置属性绑定源码部分剖析-待补充 中。
ApplicationContext的继承体系
BeanFactory (根接口)
↓
HierarchicalBeanFactory (支持父子容器)
↓
ConfigurableBeanFactory (可配置的BeanFactory)
↓
AutowireCapableBeanFactory (支持自动装配)
↓
AbstractBeanFactory (抽象实现)
↓
DefaultListableBeanFactory (默认实现)
↓
ApplicationContext (企业级容器接口)
↓
ConfigurableApplicationContext (可配置的ApplicationContext)
↓
AbstractApplicationContext (抽象实现)
↓
具体实现类 (ClassPathXmlApplicationContext, AnnotationConfigApplicationContext等)