gpt4 book ai didi

java - 在不初始化 Spring 上下文的情况下使用 Spring 属性加载

转载 作者:行者123 更新时间:2023-12-05 03:46:07 25 4
gpt4 key购买 nike

我喜欢 Spring 属性加载机制。事实上,您可以定义多个配置文件并使用其他配置文件覆盖或扩展属性,您可以使用不同的文件类型(.properties、XML、JSON 等)来存储您的属性,您可以使用其他属性的值解决自己的值(value),aso。

但要使用这些属性,您必须以某种方式初始化 Spring 上下文(@SpringBootApplication 或@SpringBootTest)。而且我想在一些库中使用这种属性加载机制,我不能保证上下文被加载(我不想加载它)。

那么,我的问题是:
我能否以某种方式创建一个使用 Spring 库以 Spring 加载其属性的相同方式加载属性(按需)的类?然后其他类将使用此类来访问属性。无需加载注释。

我已经搜索了一段时间,但我还没有找到解决方案。

如果是这样就好了。知道解决方案。

祝您 body 健康,圣诞快乐!

最佳答案

属性查找机制由接口(interface)定义 PropertyResolver ,通过接口(interface) Environment 扩展以支持 profiles,通过接口(interface)进一步扩展 ConfigurableEnvironment支持PropertySources ,即搜索一组属性源以查找属性的概念。

它的实现例如按类别 StandardEnvironment ,它定义属性源:

  • 系统属性
  • 系统环境变量

以上都是包的一部分org.springframework.core.env ,即 spring-core-XXX.jar 文件的一部分。


类添加了对application.properties 文件的支持ConfigFileApplicationListener在包装内 org.springframework.boot.context.config .

该类需要一个 SpringApplication 的实例在包 org.springframework.boot 中。

它们是 spring-boot-XXX.jar 文件的一部分。


因此,获得基本的 Spring 属性支持很容易,只需创建一个 StandardEnvironment 对象即可。

加载 application.properties 文件深深地嵌入到 Spring Boot 代码中,如果不初始化 Spring 上下文就很难做到。

关于java - 在不初始化 Spring 上下文的情况下使用 Spring 属性加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65424015/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com