0

我正在尝试使用带有配置的自定义弹簧启动启动器,该配置依赖于属性的存在作为我的弹簧启动项目中的依赖项。启动器的配置是这样的:

@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 的 Web 控制台中,它按预期显示在应用程序的 env 设置中。当我将变量直接添加到应用程序(例如通过清单)时,它可以工作,但是我不想在那里拥有凭据。

在上下文启动期间,用户提供的服务的变量似乎(还没有?)在属性中可用,因此找不到。他们是在其他财产来源之后捡起来的吗?我是否可能必须使用@AutoConfigureAfter带有一些 Bean 的 spring-cloud ?我试过了,@AutoConfigureAfter(CloudFoundryVcapEnvironmentPostProcessor.class)但没有帮助。

任何帮助是极大的赞赏。

4

0 回答 0