当前位置: 首页 > 知识库问答 >
问题:

Spring Cloud Config Server-将服务器配置为从一个存储库中获取公共属性,并从不同的存储库中获取应用程序属性

鲜于峰
2023-03-14

我有以下要求:

  • 有一个git repo(commonRepo)和一个应用程序。包含所有应用程序通用属性的yml文件
  • 还有另一个git repo(applicationRepo)和应用程序的配置文件:app1。yml,附录2。yml等

其要点是将所有公共属性集中在具有特定写入权限的repo中。

我需要将Spring Cloud Config Server配置为从两个repo读取,优先级如下:

applicationRepo:appX。yml公司

是否可以将其配置为执行此操作?

共有1个答案

商璞
2023-03-14

这是我的初始配置:

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

在没有环境匹配的情况下,有一个默认回购,根据模式有三个回购。

这个想法是有另一个基础回购(具有最低优先级),将始终加载,也取决于环境。此基础回购包含一个应用程序。yml由不同团队管理共享财产。

显然,没有办法通过yml属性来实现这一点,所以我必须手动定义bean,这是实现这一点所必需的代码:

    @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;
    }
 类似资料:
  • 我正在尝试从profile repository中获取first name和last name等属性,并使用Droplet将其显示在jsp中。下面是我的示例代码:sampledroplet.java SampleDroplet.Properties sampledroplet.jsp 我试着在jsp中显示profileId,它起作用了。但当我将它传递给droplet时,它显示NullPointer

  • 问题内容: 我正在尝试运行一个容器,该容器将公开私有GitHub存储库上的软件包中的golang服务。 由于我与GCE合作,因此我的入门图片是google / debian:wheezy。 安装所有必需的依赖项和工具后,我正在运行 包裹是私人仓库。 我添加了GitHub SSH密钥以允许从私有存储库克隆到docker文件: 尽管如此,当go尝试克隆存储库时,我在go get流程中遇到了一个错误:

  • 问题内容: 有没有人知道您是否可以在Maven存储库中找到源JAR? 问题答案: Maven Micro-Tip:获取源代码和Javadocs 在IDE中使用Maven时,经常会发现IDE需要解析库依赖项的源代码和Javadocs。有一个简单的方法可以实现该目标。 第一个命令将尝试下载pom文件中每个依赖项的源代码。 第二个命令将尝试下载Javadocs。 Maven受这里的图书馆打包人员的摆布。

  • 所以我有一个企业存储库,那里有已经部署的主POM。现在我有其他项目,我需要单独安装,但他们有父pom。 每当我进行mvn清理安装时,我都无法找到父pom的工件。 我的本地设置。xml为central定义了镜像,因为我假设maven首先尝试在relativePath中搜索父pom,然后是本地repo,最后是远程repo。父POM具有所有提到的存储库和分发详细信息,因此其他项目或本地设置中不存在这些回

  • 问题内容: 我的项目使用两个存储库。我已经配置詹金斯使用两个回购 但是,詹金斯只是从一个仓库中进行日志更改。任何想法我怎么可以设置从两个回购的变化。我也尝试了多种SCM,但是观察到了相同的行为。 问题答案: 使用“高级”按钮,插入名称“ origin”和RefSpec“ + refs / heads / :refs / remotes / origin / ”,这样对我有用。

  • 我有一个web应用程序,我想使用Spring Boot的服务器配置。这两个应用程序都位于本地主机上。我从头开始创建了前两个应用程序,它们一起工作,但当我使用具有许多依赖项(不仅仅是云配置和web依赖项)的客户端时,它就不再工作了。我怎么知道?我在服务器的属性文件中有一个变量,我试图在我的客户机中用@Value(“${atena}”)来使用它,错误出现在java中。lang.IllegalArgum