ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

如何创建依赖于Spring Bean的自定义Spring PropertySource

2019-07-22 18:20:18  阅读:186  来源: 互联网

标签:java spring spring-boot netflix-zuul spring-cloud


我正在尝试将spring-cloud堆栈用于将使用Zuul的项目.在我的组织中,我们有一个基于xml的自定义配置堆栈,并进行属性组合和分层覆盖.由于处理这种配置的方式,我一直在努力为它创建一个PropertySource.

我的自定义PropertySource必须使用我的Config bean,但是因为在Spring Boot引导期间初始化了PropertySources,所以应用程序上下文尚未完全初始化,我无法访问暴露基于xml的配置系统的自定义Bean.

@ConfigurationProperties似乎完全偏向于.properties和.yaml文件. Config bean在ApplicationContextInitializer中初始化.有没有办法延迟各种服务中ConfigurationProperties的解析,所以我可以在初始化后使用我的Config bean构建我的自定义属性源?

解决方法:

我最初尝试(在提出问题之前)在我的配置中创建一个自定义的PropertySourceLocator(正如Dave Syer所提到并在他给出的链接中有详细记录)并使用我自己的spring.factories进行注册(再次,在有用的链接中演示)由Spencer Gibb在评论中给出.)问题是我的属性源需要在ApplicationContextInitializer中完成的一些工作之后配置,并且属性源似乎在发生之前就已经解决了(至少那些作为工厂连接的) for org.springframework.cloud.bootstrap.BootstrapConfiguration).我想我通过声明我在我的PropertySource中需要一个我当时无法从ApplicationContext获取的特定bean来暗示这一点.

无论如何,为了解决这个问题,我现在在PriorityOrdered ApplicationContextInitializer中注册属性源,以便在另一个初始化我的配置对象之后进行.类似于:context.getEnvironment().getPropertySources().addFirst(myPropertySource);

这似乎在正确的时间将我的属性源放入环境中,并允许我根据需要预先定制上下文.

标签:java,spring,spring-boot,netflix-zuul,spring-cloud
来源: https://codeday.me/bug/20190722/1505201.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有