当前位置: 首页 > 知识库问答 >
问题:

用于@ConfigurationProperties的基于XML的自定义属性源加载器

赖翰
2023-03-14

我感兴趣的是创建一个或多个自定义属性源加载器,并在我的应用程序中使用那些带有@ConfigurationProperties的属性源。

例如,我想开发一个属性源加载器,它能够加载XML文件并将其转换成一组属性,这些属性可以注入到我的< code>@Configuration注释类中。

@Configuration
@ConfigurationProperties(locations="classpath:config.xml")
public class MyConfig
{
    ...
}

是否有任何此类基于 XML 的属性源加载程序公开可用?如果没有,那么一旦我实现了它,我将如何将其提供给我的应用程序?

谢谢。

共有1个答案

柯子琪
2023-03-14

您可以检查YamlProperty tySourceLoader它是如何实现的。一旦你实现了它的方法

org.springframework.boot.env.YamlPropertySourceLoader#getFileExtensions

将在您添加以下内容后调用

@ConfigurationProperties(locations="classpath:config.xml")

但是观察 Yaml属性源加载器的实现,看起来你会有很多工作要做,包括配对等。

您应该检查yaml是否对您来说足够了,因为它为您提供了创建结构化属性的可能性:

例如,以下YAML文档:

environments:
    dev:
        url: http://dev.bar.com
        name: Developer Setup
    prod:
        url: http://foo.bar.com
        name: My Cool App

会转化成这些特性:

environments.dev.url=http://dev.bar.com
environments.dev.name=Developer Setup
environments.prod.url=http://foo.bar.com
environments.prod.name=My Cool App

YAML列表用[index]解引用器表示为属性键,例如这个YAML:

my:
   servers:
       - dev.bar.com
       - foo.bar.com

会转化成这些特性:

my.servers[0]=dev.bar.com
my.servers[1]=foo.bar.com

即使您已经准备好了XML文档,这也是您希望在配置中加载它们的原因,但将XML转换为YAML看起来要简单得多(https://github.com/FasterXML/jackson-dataformat-xml)而不是使用现有的YamlPropertySourceLoader来编写自己的PropertyResourceLoader。

 类似资料:
  • 我有一个带有环境变量的外部属性源(比如一个. properties文件),如下所示: 我想用这些初始化一个< code > @ configuration properties : 当我在应用程序开始时将这些设置为环境变量时,一切都很好。但是,当我在

  • 禁止DisableNastyThing1或DisableNastyThing2的工作方式与禁止模块完全相同。换句话说,myCheck XML元素名将表示这样一个事实,即该检查没有映射到实现AbstractCheck的实际Java类,而是映射到执行嵌套在其中的检查的一些通用检查。 是不是Checkstyle中已经有这样的概念,而我却没能找到它,还是怎么的?

  • > 如何以编程方式从log4j2中的记录器中删除appender?-即使我删除appender,它仍然发送日志 如何根据java系统属性有条件地添加log4j2附加器?-appender忽略通过:export log_level=off从命令行传递变量,并始终使用默认值,在本例中均为如此。脚本解决方案也有同样的问题 -level属性不接受动态值,并引发无法将“${sys:loglevel}”强制转

  • 本文向大家介绍python基于property()函数定义属性,包括了python基于property()函数定义属性的使用技巧和注意事项,需要的朋友参考一下 这篇文章主要介绍了python基于property()函数定义属性,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 正常情况下,类包含的属性应该是隐藏的,只允许通过类提供的方法来间接的实现对

  • 我正在使用JavaFX属性的模型实体consitiing witch允许我更改单个位置上的值,将它们绑定到UI,并在模型实体数组中添加带有额外条件的更改的监听器(惟一值等)。 我必须将模型存储在数据库中,所以问题如下: 注意:一些可绑定属性根本不必持久化。

  • 在Spring Boot中,有一个属性文件application.property,与这个属性一起,我创建了一个额外的属性文件,名为MyOwnProp.properties。 如何在中加载?表示如何在Application.properties中包含另一个命名属性? 有什么进展吗?