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

Spring Boot 启动时修改上下文

Spring Boot 启动时修改上下文

  • 为了让项目在启东时,加载到封装的JAR中的国际化文件
  • 在封装JAR是增加以下配置类
  • 可用于更改启动上下文中的信息
  • 依赖
        <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-autoconfigure</artifactId><version>2.7.18</version></dependency>
  • 示例
import org.apache.commons.lang3.StringUtils;
import org.springframework.context.ApplicationContextInitializer;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.core.Ordered;
import org.springframework.core.env.ConfigurableEnvironment;
import org.springframework.core.env.Environment;
import org.springframework.core.env.MapPropertySource;import java.util.HashMap;
import java.util.LinkedHashSet;
import java.util.Set;public class EnviromentAutoConfigration implements ApplicationContextInitializer<ConfigurableApplicationContext>, Ordered {@Overridepublic int getOrder() {return Integer.MAX_VALUE;}@Overridepublic void initialize(ConfigurableApplicationContext applicationContext) {ConfigurableEnvironment environment = applicationContext.getEnvironment();HashMap<String, Object> properties = new HashMap<>();properties.put("spring.messages.basename", getMessagesBasenameProperty(environment));MapPropertySource propertySource = new MapPropertySource("", properties);environment.getPropertySources().addFirst(propertySource);}
/*
*读取指定的国际化文件
*/private static String getMessagesBasenameProperty(Environment environment) {LinkedHashSet<Object> basenames = new LinkedHashSet<>();String basenameString = environment.getProperty("spring.messages.basename");if (StringUtils.isNoneBlank(basenameString)) {basenames.addAll(Set.of(basenameString.split(",")));}basenames.add("messages/xxx_messages");return String.join(",",basenames);}
}

resources目录下META-INF文件夹spring.factories文件配置指定类

#上下文,环境配置,这个会先读取
org.springframework.cloud.BootstrapConfiguration=xxx.EnviromentAutoConfigration
#读取@Configuration注解的配置文件
org.springframework.boot.autoconfigure.EnableAutoConfiguration=
http://www.lryc.cn/news/486154.html

相关文章:

  • 传奇996_19——常用函数
  • 计算机毕业设计Python+Neo4j知识图谱医疗问答系统 大模型 机器学习 深度学习 人工智能 大数据毕业设计 Python爬虫 Python毕业设计
  • 【Python】如何设置VSCode中的Pylint,消除各种没有必要的警告
  • 游戏引擎学习第14天
  • 关于mysql中的锁
  • 机器学习-4:机器学习的建模流程
  • Android 6年经验面试总结 2024.11.15
  • R语言数据分析可视化——summarytools包的使用
  • 转型一年半,虎牙直播的第二增长曲线喜忧参半
  • makefile笔记
  • Rewar Model的输出(不包含训练)
  • Python调用API翻译Excel中的英语句子并回填数据
  • SQL面试题——抖音SQL面试题 最大在线用户数
  • 前端知识点---Window对象(javascript)了解
  • llama factory lora 微调 qwen2.5 7B Instruct模型
  • 类和对象——拷贝构造函数,赋值运算符重载(C++)
  • Android 关于使用videocompressor库压缩没有声音和异常的问题
  • LeetCode-215.数组中的第K个最大元素
  • 『OpenCV-Python』视频的读取和保存
  • 什么是Spring Boot Actuator
  • 计算机网络:运输层 —— 运输层端口号
  • linux下编译安装memcached
  • 最短路径生成树的数量-黑暗城堡
  • 将已有的MySQL8.0单机架构变成主从复制架构
  • JSON.stringify的应用说明
  • pyflink datastream数据流ds经过一系列转换后转为table,t_env.from_data_stream(ds)
  • vxe-grid table 校验指定行单元格的字段,只校验某个列的字段
  • 【Java多线程】单例模式(饿汉模式和懒汉模式)
  • python 异步编程之协程
  • 现代密码学|古典密码学例题讲解|AES数学基础(GF(2^8)有限域上的运算问题)| AES加密算法