版权声明
- 本文原创作者:谷哥的小弟
- 作者博客地址:http://blog.csdn.net/lfdfhl
以下是Spring Context模块的核心要点总结,结合官方定义与实际应用场景整理(严格避免表格形式):
一、核心定位与价值
IoC容器实现
Spring Context是Spring框架的运行时引擎,在基础容器(BeanFactory)上扩展了企业级功能,提供完整的Bean生命周期管理、依赖注入和资源调度能力。
应用上下文(ApplicationContext)
作为容器的核心接口,统一管理配置、资源及组件交互,是访问Spring服务的入口点。
二、核心功能
Bean管理增强
-
依赖注入:支持构造器、Setter、字段注入,自动装配Bean依赖。
-
作用域控制:管理Singleton(单例)、Prototype(原型)等作用域的Bean实例。
企业级扩展能力
-
国际化(i18n):通过MessageSource接口实现多语言消息本地化。
-
事件传播机制:基于ApplicationEventPublisher发布事件,ApplicationListener监听事件,实现组件解耦。
-
统一资源访问:抽象Resource接口,支持类路径、文件系统、URL等资源的无缝加载。
-
环境配置集成:支持Profile多环境切换与属性占位符解析(如@Profile)。
Web应用支持
WebApplicationContext扩展ApplicationContext,为Web环境提供请求作用域、会话管理等特性(如Spring MVC)。
三、关键实现类
ClassPathXmlApplicationContext
从类路径加载XML配置文件,适用于传统XML配置项目。
FileSystemXmlApplicationContext
从文件系统路径加载XML配置,适合显式指定外部配置文件。
AnnotationConfigApplicationContext
基于注解配置(如@Configuration),现代Spring应用的主流选择。
WebApplicationContext
专为Web应用设计,支持Servlet容器集成(如Spring Boot内嵌Tomcat)。
四、容器生命周期
启动阶段(refresh())
加载配置 → 解析Bean定义 → 实例化单例Bean → 依赖注入 → 触发ContextRefreshedEvent事件。
运行阶段
处理请求、事件监听及Bean调用。
销毁阶段(close())
触发ContextClosedEvent → 执行Bean销毁回调(@PreDestroy)→ 释放资源。
五、总结
Spring Context是Spring框架的灵魂模块,通过ApplicationContext将IoC容器与企业级功能(事件、资源、国际化)深度融合,其设计核心在于:
-
扩展性:分层接口(如ListableBeanFactory)支持多样化需求。
-
配置灵活性:兼容XML、注解、Java Config三种配置方式。
-
解耦与事件驱动:事件机制降低组件耦合度,提升系统可维护性。