0

Cloud Foundry 上部署了一个 Spring Boot 应用程序,它需要连接到 Bitbucket 存储库以从存储库中存在的外部 Yaml 文件获取数据。目前,我正在使用 Spring Cloud Config Server 并通过 application.yaml 中的 SSH 密钥配置 bitbucket 存储库。公钥放置在 bitbucket 服务器上的存储库设置下。

应用程序.yaml

spring:
  cloud:
    config:
      server:
        git:
          uri: ssh://git@bitbucket.bip.intl.com/in/myrepo.git
          cloneOnStart: true
          ignoreLocalSshSettings: true
          default-label: feature/RQ4
          privateKey: |
                         -----BEGIN RSA PRIVATE KEY-----
                         MIIEpAIBAAKCAQEAx8yTitlZiJQ8WbQueMBXK3pfBlHM7XQ69i7asDZK14bAjmAH
                         ER3V8rynmvKGpkih7TPyqyr6r+HAEalckLaCqwH6GANA24gdHYl+un5czLQiHY9G
                         PyWBwH3NXv5jsPxwrgWRoQGYwQ8U8lzA+eI6g7+x7qeRK5+Vpi5+GghEHS/x0ujb
                         BXUL2MwieB+yOpOyPGDvj5jDCaFo0wWrUeQ8hyoUVDNdV0+U4LrU1GDFsfNLCmUt
                         udQ5pwmUgYWDRnw4mGsI20cP/wuWeys3ZToUSYLPQFJTXE5ZaJe/XPxPoFbFMS8k
                         9zob5trbuuvMul3G56xnN15CBdo+50T19OG8oQIDAQABAoIBAQC/3EaOXfspOVfe
                         uDSsBd9vQ9p+QgzstOFtyD5+WhRydNbxoWsH18O8jcbQ9zWv9i1wj6LnFaWXQcxj
                         6WOXH3vI5WQYrP8aENIMrB0CzxckB5J/GjdVqhm4E9Yj81sd+LvnkDdxCgx6z5XI
                         yqMRElooa+tchpLT9jIJW7oCG4/1CYNYLlH0gTjhCEQwLwm2C7FlbcaJsADlQhRa
                         +CUbqU5r0fI1ixTlg1VHAVyGtLEM2w0E3Cc0zAioYu/+re6zadTJHU5osyIMYpzj
                         5CYleWBh6/cfu2JrT8Dd5jxdXhG2mirLZrWpbGXjcLTHjp8FSdmDo8pgfcW5aYgR
                         SzuuqamVAoGBAO47UjGFCpph6YbepOvZnt0Uxo+IwOIqvgYt8ox5A2pOQBOjOSQU
                         YClhclhzuJ4zHHOgvv1PzC2E7tNEH4e93Lcfssqqx6WdyFnPlf6fo9tNh+ZZETWd
                         jMByzinK7j788AkOhpDxiULSkc1EMJ3T/D9ADrN6ZxfI9lq4LXVCJ79/AoGBANaz
                         cTaWIyD1CShaMx7oBLxq9Q8h2OnPhzsA9N8z8E6ZczXIUUC7TAZPEJA6bkECusxl
                         vDhb3LxIyHDk03RBybmOBsxqpzIdpx8DiHTwwaWqw8Qo852Rxgr7gqxIY5lC6Ll3
                         +ZF2iTGQJeS04bo9RSU9cuRuz1UAh+dgvgwktJPfAoGBALkLGM/gEBlUfkjFPYL4
                         uV3uGkE5LuE94/X20JRuFsoG19ypBuRQc1URHPk5gahX+PyTWmZ2Chk9TSiKnJca
                         UYtoMr8bIhIxWYLxLAfoRiU8tpekjSqBIugFBMAPoTkJzQSr5LhG9KAT4S54je65
                         zw/uGL0uEU+3SCu1LZIL/cXPAoGAF6clLdJUhGj6XUuynhEJlIhj/wrHjtqiF0n/
                         sCdUrhQRsTckXHFF6twDAyCszNS0J5h9p+fW5ZdPHcDX2tL0mlCfRx3o1YiWxL/q
                         5JcxfkLV1mJ8lDtfCg6zUq+W6WeJpAUnpdffddfcAIM86vudBoFCiw/6H28zibYK
                         uePBURkCgYBtrsPfcqStKzgYMEM+xPtJHYuuBcVNmZfRZzRCmCF5wlgSSdHUkO0K
                         ZTZZNmqeQTHK0AWDLg+W/Fr0HWrY6Y1aj8Fo/II8eMLsCQIX+fVayXgRxM9vqJgb
                         cCfB7Fg0OOA9NofWifXmL7jRyR86jipEo6Ixc+ULhrehnS+FioPcRw==
                         -----END RSA PRIVATE KEY-----

我的 bitbucket 存储库中存在的外部 yaml 文件如下所示。我需要通过 Spring Cloud Config Server 在我的 Spring boot PaaS 中加载和读取这个 Yaml 文件。假设 Out.yaml 文件存在于分支功能/RQ4 或根位置的 dev-intg 分支中。

是否可以在我的 Spring 启动应用程序中以纯文本形式将完整的 Yaml 文件加载为 Java 字符串。获得完整的 Yaml 内容后,我将使用 Object mapper 并使用为该 Yaml 编写的映射器类转换为相应的 java 对象。我可以使用 SSH 密钥通过 Config Server 连接到我的存储库,但不确定如何从 bitbucket 存储库读取 yaml 或等效的 Json 文件。

输出.yaml

---      
   
data:  
  - outNumber: 1234
    outName: "name1"
    priority: 2
    clientTypes:
      - clientType: XYZ

  - outNumber: 4567
    outName: "name2"
    identifier: name2
    priority: 1
    clientTypes:
      - clientType: ABC
4

1 回答 1

0

读取属性文件的数据时。你可以有一个类并相应地映射。

@Component
@ConfigurationProperties("customer")
public class CustomerConfiguration {

private final Map<String, List<Customer>> customerProfiles;
 
public CustomerConfiguration() {
customerProfiles = new HashMap<>();   

public static class Customer {
 private String outNumber;
 private String outName;
 private int priority;
 private Map<String, String> clientTypes;
} 

//getters and setters

}
于 2020-07-21T08:35:01.130 回答