详细分析 Spring Framework 中的 ConfigurableApplicationContext 和 Environment (附Demo)
目录
- 前言
- 1. ConfigurableApplicationContext
- 2. Environment
- 3. Demo
前言
对于Java的基本知识,推荐阅读:
- java框架 零基础从入门到精通的学习路线 附开源项目面经等(超全)
- 【Java项目】实战CRUD的功能整理(持续更新)
从实战中学习,最早是在JimuReport中所看到
1. ConfigurableApplicationContext
ConfigurableApplicationContext是Spring框架中用于描述和管理应用程序上下文的接口,它扩展了ApplicationContext接口,提供了一些额外的功能,特别是在配置和管理上下文方面
主要功能
- 生命周期管理:提供refresh()和close()方法,允许开发者在运行时控制上下文的生命周期
- Bean注册和管理:支持动态注册、更新和注销Bean
- 环境访问:通过getEnvironment()方法获取当前环境配置
- 事件发布:支持发布应用程序事件,使用publishEvent()方法
基本的方法如下:
void refresh()
: 刷新应用程序上下文,重新加载所有Beanvoid close()
:关闭应用程序上下文,释放所有资源Environment getEnvironment()
:获取当前的环境配置
2. Environment
Environment接口提供了对环境属性的访问,主要用于获取应用程序的配置属性、活动的配置文件等
主要的方法如下:
getProperty(String key)
:根据给定的键获取属性值getActiveProfiles()
:获取当前活动的配置文件列表getDefaultProfiles()
:获取默认配置文件列表containsProperty(String key)
:检查是否包含某个属性
3. Demo
对应的Demo呈现如下:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.core.env.Environment;@SpringBootApplication
public class DemoApplication {public static void main(String[] args) {// 启动Spring应用程序,返回ConfigurableApplicationContext实例ConfigurableApplicationContext context = SpringApplication.run(DemoApplication.class, args);// 获取Environment对象Environment env = context.getEnvironment();// 获取并输出server.port属性String port = env.getProperty("server.port", "8080"); // 默认值为8080System.out.println("应用程序运行在端口: " + port);// 获取并输出当前活动的配置文件String[] activeProfiles = env.getActiveProfiles();System.out.println("当前活动的配置文件: " + String.join(", ", activeProfiles));// 获取并输出默认配置文件String[] defaultProfiles = env.getDefaultProfiles();System.out.println("默认配置文件: " + String.join(", ", defaultProfiles));// 关闭上下文context.close();}
}
相关的配置文件:
执行截图如下: