当前位置: 首页 > news >正文

详细分析 Spring Framework 中的 ConfigurableApplicationContext 和 Environment (附Demo)

目录

  • 前言
  • 1. ConfigurableApplicationContext
  • 2. Environment
  • 3. Demo

前言

对于Java的基本知识,推荐阅读:

  1. java框架 零基础从入门到精通的学习路线 附开源项目面经等(超全)
  2. 【Java项目】实战CRUD的功能整理(持续更新)

从实战中学习,最早是在JimuReport中所看到

在这里插入图片描述

1. ConfigurableApplicationContext

ConfigurableApplicationContext是Spring框架中用于描述和管理应用程序上下文的接口,它扩展了ApplicationContext接口,提供了一些额外的功能,特别是在配置和管理上下文方面

主要功能

  • 生命周期管理:提供refresh()和close()方法,允许开发者在运行时控制上下文的生命周期
  • Bean注册和管理:支持动态注册、更新和注销Bean
  • 环境访问:通过getEnvironment()方法获取当前环境配置
  • 事件发布:支持发布应用程序事件,使用publishEvent()方法

基本的方法如下:

  1. void refresh(): 刷新应用程序上下文,重新加载所有Bean
  2. void close():关闭应用程序上下文,释放所有资源
  3. 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();}
}

相关的配置文件:

在这里插入图片描述

执行截图如下:

在这里插入图片描述


http://www.mrgr.cn/news/49694.html

相关文章:

  • “printf”函数使用说明
  • 使用 Visual Studio Installer Projects 打包 C# WinForms 程序的教程
  • 怎么确保一个集合不能被修改?
  • 【C++贪心 DFS】2673. 使二叉树所有路径值相等的最小代价|1917
  • Golang | Leetcode Golang题解之第478题在圆内随机生成点
  • [翻译]MOSIP Blue Book
  • Spring Boot、Spring MVC和Spring有什么区别
  • 【最新华为OD机试E卷-支持在线评测】考勤信息(100分)多语言题解-(Python/C/JavaScript/Java/Cpp)
  • <<迷雾>> 第11章 全自动加法计算机(5)--顺序取数 示例电路
  • SpringBoot基础(五):集成JUnit5
  • Oracle AI Vector Search
  • 如何使用Python实现文件的增量备份
  • 台式机来电自启动设置
  • Java | Leetcode Java题解之第477题汉明距离总和
  • 面对配分函数 - 对数似然梯度篇
  • 苹果AI科学家研究证明基于LLM的模型存在缺陷 因为它们无法推理
  • Python | Leetcode Python题解之第478题在圆内随机生成点
  • AI学习指南深度学习篇-迁移学习的基本原理
  • 2.1 使用点对点信道的数据链路层
  • C++入门基础知识112—【关于C++嵌套 switch 语句】