Spring上下文
在Spring框架中,上下文(Context)是一个非常重要的概念,它代表了Spring应用的核心,用于管理应用程序中的bean(组件)的生命周期,配置信息等。Spring框架提供了多种类型的上下文实现,其中最常用的是ApplicationContext接口及其实现类。
ApplicationContext
ApplicationContext是Spring框架中的核心接口,它继承自BeanFactory接口,提供了更丰富的功能。ApplicationContext不仅管理bean的创建和依赖注入,还提供了其他高级功能,如国际化和资源加载等。
ApplicationContext的实现类
ClassPathXmlApplicationContext:从类路径下的XML文件中加载配置文件。
1
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
FileSystemXmlApplicationContext:从文件系统中的XML文件中加载配置文件
1
ApplicationContext context = new FileSystemXmlApplicationContext("path/to/applicationContext.xml");
AnnotationConfigApplicationContext:用于加载基于Java的配置类(使用
@Configuration注解的类)。1
ApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);
XmlWebApplicationContext:专门为Web应用设计的
ApplicationContext实现,用于加载Web应用的XML配置文件。AnnotationConfigWebApplicationContext:用于Web应用,加载基于Java的配置类。
使用ApplicationContext
加载配置文件或类
XML配置:通过
ClassPathXmlApplicationContext或FileSystemXmlApplicationContext加载XML配置文件。Java配置:通过
AnnotationConfigApplicationContext加载使用@Configuration注解的类。
获取Bean
一旦上下文被创建,你可以通过它来获取需要的
bean或者使用名称:。例如:1
2MyBean myBean = context.getBean(MyBean.class); // 获取bean
MyBean myBean = (MyBean) context.getBean("myBean"); // 获取使用名称关闭上下文
当Spring应用结束时,应该关闭上下文以释放资源或者使用自动关闭:
1
2((ConfigurableApplicationContext) context).close(); // 关闭上下文
((AbstractApplicationContext) context).registerShutdownHook(); // 注册JVM关闭钩子,自动关闭上下文
高级功能
- 国际化:通过
MessageSource获取本地化消息。 - 事件发布:发布和监听应用事件。
 - 资源管理:加载文件资源,如属性文件、XML文件等。
 - 环境抽象:提供对不同环境的抽象,如开发、测试、生产等。
 




