用于@ConfigurationProperties的自定义基于XML的属性源加载器
发布时间:2020-12-16 07:48:38 所属栏目:百科 来源:网络整理
导读:我有兴趣创建一个或多个自定义属性源加载器,并在我的应用程序中使用带有@ConfigurationProperties的属性源. 例如,我想开发一个属性源加载器,它能够加载XML文件并将其转换为一组属性,这些属性可以注入我的@Configuration带注释的类中. @Configuration@Configu
我有兴趣创建一个或多个自定义属性源加载器,并在我的应用程序中使用带有@ConfigurationProperties的属性源.
例如,我想开发一个属性源加载器,它能够加载XML文件并将其转换为一组属性,这些属性可以注入我的@Configuration带注释的类中. @Configuration @ConfigurationProperties(locations="classpath:config.xml") public class MyConfig { ... } 是否公开提供任何此类基于XML的属性源加载器?如果没有,那么一旦实施,我将如何将其提供给我的应用程序? 谢谢.
您可以检查YamlPropertySourceLoader的实现方式.一旦实现了它的方法
org.springframework.boot.env.YamlPropertySourceLoader#getFileExtensions 将在您添加此类内容后调用 @ConfigurationProperties(locations="classpath:config.xml") 但是看着YamlPropertySourceLoader的实现看起来你会有很多工作要做,配对等等. 您应该检查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] dereferencers表示为属性键,例如这个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比编写自己的PropertySourceLoader要简单得多. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |