2017-07-18 18 views
2

我有以下要求:春云配置服务器 - 配置服务器从一个存储库和应用程序属性形成了不同的存储库中获得共同财产

  • 有一个混帐回购协议(commonRepo)与application.yml包含所有应用程序共有的属性的文件。
  • 还有一个混帐回购协议(applicationRepo)与应用程序的配置文件:app1.yml,app2.yml等

这样做的一点是要在特定回购集中所有的公共属性写入权限。

我需要配置Spring云配置服务器从两个回购协议读取,具有以下优先级:

applicationRepo:appX.yml> applicationRepo:application.yml> commonRepo:application.yml

它可以配置它来做到这一点?

+0

可悲的是,我还没有尝试过自己,但在如果您没有在网上找到任何有用的信息,请尝试官方文档http://cloud.spring.io/spring-cloud-static/spring-cloud-config/1.3.1.RELEASE/ - 他们有一个模式匹配部分和多个存储库,这可能会帮助你 – maydawn

+1

它不。多个存储库功能旨在按团队分离配置。一旦找到匹配就停止。 – spencergibb

+0

@spencergibb你认为它可以被认为是未来的功能?我认为这是必要的,在我们公司的某些属性,例如数据库配置(url,db用户,db密码)只能由基础设施团队设置,这就是为什么我们需要他们在不同的回购中,只允许团队更新道具 – codependent

回答

1

这是我最初的配置:

spring: 
    application: 
    name: config-server 
    cloud: 
    config: 
     server: 
     git: 
      uri: file:///home/codependent/git/scc-dev 
      repos: 
      dev: 
       pattern: '*/dev' 
       uri: file:///home/codependent/git/scc-dev 
      pre: 
       pattern: '*/pre' 
       uri: file:///home/codependent/git/scc-pre 
      pro: 
       pattern: '*/pro' 
       uri: file:///home/codependent/git/scc-pro 

有一个默认回购的情况下,没有环境的匹配,并根据一图中的三个回购。

这个想法是有另一个基地回购(最低优先级),总是会被加载,也取决于环境。这个基本仓库包含一个application.yml,其中共享属性由不同的团队管理。

显然没有通过阳明性能做,所以我不得不手动定义豆的方式,这是代码要做到这一点:

@Bean 
    public EnvironmentRepository baseEnvironmentRepository(){ 
     ConfigurableEnvironment ce = new StandardServletEnvironment(); 
     PatternMatchingJGitEnvironmentRepository devRepo = new PatternMatchingJGitEnvironmentRepository("file:///home/codependent/git/scc-ops-dev"); 
     devRepo.setEnvironment(ce); 
     devRepo.setForcePull(false); 
     devRepo.setPattern(new String[]{ "*/dev" }); 

     PatternMatchingJGitEnvironmentRepository preRepo = new PatternMatchingJGitEnvironmentRepository("file:///home/codependent/git/scc-ops-pre"); 
     preRepo.setEnvironment(ce); 
     preRepo.setForcePull(false); 
     preRepo.setPattern(new String[]{ "*/pre" }); 

     PatternMatchingJGitEnvironmentRepository proRepo = new PatternMatchingJGitEnvironmentRepository("file:///home/codependent/git/scc-ops-pro"); 
     proRepo.setEnvironment(ce); 
     proRepo.setForcePull(false); 
     proRepo.setPattern(new String[]{ "*/pro" }); 

     Map<String, PatternMatchingJGitEnvironmentRepository> map = new HashMap<>(); 
     map.put("dev", devRepo); 
     map.put("pre", preRepo); 
     map.put("pro", proRepo); 

     MultipleJGitEnvironmentRepository multiple = new MultipleJGitEnvironmentRepository(new StandardServletEnvironment()); 
     multiple.setUri("file:///home/codependent/git/scc-ops-dev"); 
     multiple.setRepos(map); 
     multiple.setOrder(Ordered.LOWEST_PRECEDENCE); 
     return multiple; 
    } 

    @Bean 
    public EnvironmentRepository environmentRepository(){ 
     ConfigurableEnvironment ce = new StandardServletEnvironment(); 
     PatternMatchingJGitEnvironmentRepository devRepo = new PatternMatchingJGitEnvironmentRepository("file:///home/codependent/git/scc-dev"); 
     devRepo.setEnvironment(ce); 
     devRepo.setForcePull(false); 
     devRepo.setPattern(new String[]{ "*/dev" }); 

     PatternMatchingJGitEnvironmentRepository preRepo = new PatternMatchingJGitEnvironmentRepository("file:///home/codependent/git/scc-pre"); 
     preRepo.setEnvironment(ce); 
     preRepo.setForcePull(false); 
     preRepo.setPattern(new String[]{ "*/pre" }); 

     PatternMatchingJGitEnvironmentRepository proRepo = new PatternMatchingJGitEnvironmentRepository("file:///home/codependent/git/scc-pro"); 
     proRepo.setEnvironment(ce); 
     proRepo.setForcePull(false); 
     proRepo.setPattern(new String[]{ "*/pro" }); 

     Map<String, PatternMatchingJGitEnvironmentRepository> map = new HashMap<>(); 
     map.put("dev", devRepo); 
     map.put("pre", preRepo); 
     map.put("pro", proRepo); 

     MultipleJGitEnvironmentRepository multiple = new MultipleJGitEnvironmentRepository(new StandardServletEnvironment()); 
     multiple.setUri("file:///home/codependent/git/scc-dev"); 
     multiple.setRepos(map); 
     multiple.setOrder(Ordered.HIGHEST_PRECEDENCE); 
     return multiple; 
    } 
相关问题