如何使用Spring Cloud Config与本地GIT repo而不是GitHub?

时间:2014-11-14 21:17:57

标签: spring-cloud

是否有人将Spring Cloud Config配置为使用本地GIT仓库而不是GitHub?如果可以,你可以分享你的配置吗?

2 个答案:

答案 0 :(得分:10)

Spring Cloud Config服务器tests执行此操作。

uri最终看起来像file:./target/test-classes/config-repo/

您可以在bootstrap.properties

中执行类似的操作
spring.cloud.config.server.git.uri=file:/path/to/your/git/repo

答案 1 :(得分:1)

从spring-cloud-config-montior 2.0.0.RELEASE开始,FileMonitorConfiguration放弃对本地git存储库路径上的监视更改,除非将它们更改为FileSystemResource。不幸的是,如果给定本地git repo路径,如file:/ path / to / your / git / repo /,ApplicationContext DefaultResourceResolver返回FileUrlResource而不是FileSystemResource。 我的解决方法是创建一个自定义ProtocolResolver,它是用于扩展DefaultResourceLoader的SPI,并且如果本地git repo路径以“ //”开头,则使用FileSystemResourceLoader返回FileSystemResource。

SpringApplication app = new SpringApplication(ConfigserviceApplication.class);
        app.addInitializers(new ApplicationContextInitializer<ConfigurableApplicationContext>() {

            @Override
            public void initialize(ConfigurableApplicationContext applicationContext) {
                ProtocolResolver resolver = new ProtocolResolver() {

                    private FileSystemResourceLoader resourceLoader = new FileSystemResourceLoader();

                    @Override
                    public Resource resolve(String location, ResourceLoader resourceLoader) {
                        if(location != null && location.startsWith("//")) {
                            return this.resourceLoader.getResource(location);
                        }
                        return null;
                    }
                };
                applicationContext.addProtocolResolver(resolver);
            }
        });
        app.run(args);