dig*_*oel 3 java spring spring-boot spring-cloud netflix-zuul
我正在尝试将spring-cloud堆栈用于将使用Zuul的项目.在我的组织中,我们有一个基于xml的自定义配置堆栈,并进行属性组合和分层覆盖.由于处理此配置的方式,我一直在努力为它创建一个PropertySource.
我的自定义PropertySource必须使用我的Config bean,但是因为在Spring Boot引导期间初始化了PropertySources,所以应用程序上下文尚未完全初始化,我无法访问暴露基于xml的配置系统的自定义Bean.
@ConfigurationProperties似乎完全偏向于.properties和.yaml文件.Config bean在ApplicationContextInitializer中初始化.有没有办法延迟各种服务中ConfigurationProperties的解析,所以我可以在初始化后使用我的Config bean构建我的自定义属性源?
在 Spring Cloud 中,您需要注册一些BootstrapConfiguration(根据用户指南:http : //projects.spring.io/spring-cloud/spring-cloud.html#customizing-bootstrap-property-sources)有一个PropertySourceLocatorbean。它不应该比这更难。
PS@ConfigurationProperties不偏向于 .properties 和 .yaml 文件 - 它绑定到Environment对文件格式一无所知的 。
我最初尝试(在提出问题之前)在我的配置中创建一个自定义的PropertySourceLocator(正如Dave Syer所提到并在他给出的链接中有详细记录)并使用我自己的spring.factories注册(再次,在有用的链接中演示)由Spencer Gibb在评论中给出.)问题是我的属性源需要在ApplicationContextInitializer中完成的一些工作之后配置,并且属性源似乎在发生之前就已经解决了(至少那些作为工厂连接的那些) for org.springframework.cloud.bootstrap.BootstrapConfiguration).我想我通过声明我在我的PropertySource中需要一个我当时无法从ApplicationContext获取的特定bean来暗示这一点.
无论如何,为了解决这个问题,我现在在PriorityOrdered ApplicationContextInitializer中注册属性源,以便在另一个初始化我的配置对象之后进行.就像是:context.getEnvironment().getPropertySources().addFirst(myPropertySource);
这似乎在正确的时间将我的属性源放入环境中,并允许我根据需要预先定制上下文.
| 归档时间: |
|
| 查看次数: |
8865 次 |
| 最近记录: |