Как внедрить user_provided vcap_services при весенней загрузке - PullRequest
0 голосов
/ 21 мая 2018

Я разрабатываю приложение при весенней загрузке и развертывании в PCF (Pivotal Cloud Foundry).

Я создал 3 «пользовательских» сервиса и хотел бы внедрить их в свой код, используя @ConfigurationProperties в классе.Я искал вокруг, но единственный пример, который я нашел, это внедрение службы в класс, и мне нужно добавить список служб.

Я пробовал с @ConfigurationProperties (vcap.services), но он не работает.Сопоставленный класс: null.Не могли бы вы помочь мне понять, как CUPS можно вводить при весенней загрузке?Заранее спасибо

1 Ответ

0 голосов
/ 25 июля 2018

Когда вы создаете предоставленную пользователем услугу следующим образом

cf cups ups-example1 -p '{"user":"user1", "password":"password1"}'

и привязываете ее к вашему приложению, информация, предоставленная в предоставленной пользователем услуге, отображается в вашем VCAP_SERVICES переменная окружения.

Это должно выглядеть примерно так:

{
  "user-provided": [
   {
    "credentials": {
     "password": "password1",
     "user": "user1"
    },
    "label": "user-provided",
    "name": "ups-example1"
   }
  ]
}

С помощью Springs CloudFoundryVcapEnvironmentPostProcessor оно отображается в свойство среды, к которому может обращаться vcap.services.ups-example1.credentials.

Чтобы отобразить эти свойства в объект Java, вы можете использовать @ConfigurationProperties

@Configuration
@ConfigurationProperties("vcap.services.ups-example1.credentials")
public class UserProvidedServiceOneProperties {
  private String user;
  private String password;

  // getters & setters
}

Если вы хотите отобразить несколько предоставляемых пользователем услуг в один объект, вы можете использовать внутренние классы для этого варианта использования

@Configuration
public class UserProvidedServicesProperties {

  @Autowired
  private UserProvidedServiceOneProperties userProvidedService1;

  @Autowired
  private UserProvidedServiceTwoProperties userProvidedService2;

  // getters & setters

  @Configuration
  @ConfigurationProperties("vcap.services.ups-example1.credentials")
  public static class UserProvidedServiceOneProperties {
    private String user;
    private String password;

    // getters & setters
  }

  @Configuration
  @ConfigurationProperties("vcap.services.ups-example2.credentials")
  public static class UserProvidedServiceTwoProperties {
    private String user;
    private String secret;
    private String url;

    // getters & setters
  }
}
...