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

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

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

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


person user3382975    schedule 21.05.2018    source источник


Ответы (1)


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

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
  }
}
person benny.la    schedule 25.07.2018