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

3
我喜欢Spring属性加载机制。你可以定义多个配置文件并使用其他配置文件覆盖或扩展属性;可以使用不同的文件类型(.properties、XML、JSON等)来存储属性;可以使用其他属性的值来解析自己的值等。
但是,要使用这些属性,你必须初始化Spring上下文(@SpringBootApplication或@SpringBootTest)。我希望在一些库中使用这种属性加载机制,但我不能保证上下文已经加载(也不想加载它)。
所以,我的问题是: 我能否创建一个类来按需使用Spring库加载属性,以与Spring相同的方式加载属性? 其他类将使用这个类来访问属性,无需使用注释进行加载。
我搜索了一段时间,但还没有找到解决方案。
如果有人知道解决方案,那就太好了。
祝好,保持健康,圣诞快乐!

最好能够为我们提供一些类,在哪里它会被加载,在哪里它会被使用。 - MD Ruhul Amin
1个回答

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

例如,它可以由类StandardEnvironment实现,该类为以下属性源定义了属性:

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

上述所有内容均属于包org.springframework.core.env,即spring-core-XXX.jar文件的一部分。


application.properties文件的支持由位于包org.springframework.boot.context.config中的类ConfigFileApplicationListener添加。

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

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


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

加载application.properties文件深度嵌入在Spring Boot代码中,如果没有初始化Spring上下文将非常困难。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接