我尝试使用自定义spring-boot-starter,其配置依赖于属性的存在作为我的spring-boot-project中的依赖性。 入门者的配置是这样的:
@Configuration
@ConditionalOnProperty( {"vcap.services.my-user-provided-service.credentials.git.password"})
public class MyConfig {
@Bean
public MyBean createBean() {
[...]
}
}
当我传递属性" vcap.services.my-user-provided-service.credentials.git.password"在本地环境中一切正常。启动命令。
然而,当我将整个部署部署到cloudfoundry时,它并没有创建MyBean,随后启动失败,因为Bean上的@Autowire失败了。该日志表明未创建MyBean,因为缺少属性vcap.services.my-user-provided-service.credentials.git.password
。
我在cloudfoundry用户提供的服务my-user-provided-service
中定义了变量并将其绑定到应用程序,并在cloudfoundry的webconsole中按预期显示在应用程序的env设置中。
当我将变量直接添加到应用程序时(例如通过清单)它可以正常工作,但是我不想在那里获取凭据。
在上下文启动期间,似乎用户提供的服务变量在属性中没有(但是?),因此找不到。他们是否接受了其他财产来源?我是否可能必须使用@AutoConfigureAfter
与一些Bean of spring-cloud?我用@AutoConfigureAfter(CloudFoundryVcapEnvironmentPostProcessor.class)
试了一下,但没有用。
非常感谢任何帮助。