Правильный способ загрузки значений / свойств из Spring Cloud Consul

У меня есть приложение для весенней загрузки, у которого есть много свойств, определенных в файле .yml. Я перехожу от свойств в файле к размещению их в облаке, поэтому для этого я использую функцию ключ / значение в Spring Cloud Consul.

Я могу получить значение для данного ключа от консула, но единственный способ, который я видел задокументированный, и единственный способ, которым я мог это сделать, - это так:

@Autowired
private Environment env;

    @RequestMapping("/test")
    String home() {
         return env.getProperty("test.property");
    }

Это нормально и красиво, но у меня есть несколько существующих классов, которые по-прежнему настроены на загрузку свойств по-старому:

@Value("${test.property}")
String testProperty;

После добавления зависимости для весеннего облачного консула в мой проект я получаю новые ошибки, в которых говорится, что все эти свойства не могут быть разрешены. Я предполагаю, что это связано с тем, что весенняя загрузка видит зависимость консула и теперь либо игнорирует файл yml, либо его части.

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

Кроме того, мы будем очень признательны за любое дальнейшее понимание того, как Spring Cloud Consul работает с Spring boot для этой конкретной цели. По нему не так много документации.


person Seephor    schedule 07.07.2016    source источник
comment
Если вы используете его с клиентом Spring Cloud Config Client, @Value должен просто работать.   -  person M. Deinum    schedule 08.07.2016
comment
@ M.Deinum Я не использую Spring Cloud Consul   -  person Seephor    schedule 08.07.2016
comment
Это серверная часть, Spring Cloud Consul может довольно легко интегрироваться с конфигурацией Spring Cloud, и тогда вы получите прямо из коробки то, что хотите. См. cloud.spring.io/spring-cloud-consul/spring -cloud-consul.html (последний раздел).   -  person M. Deinum    schedule 09.07.2016
comment
@ M.Deinum, у вас есть документация по этому поводу? Все, что я прочитал до сих пор, заставило меня поверить, что если я хочу подключиться к агенту консула через Spring, то я должен использовать весенний облачный консул в своем приложении. Вы говорите, что я могу использовать облачную конфигурацию Spring в своем приложении и указать ее на сервер, на котором запущен consul?   -  person Seephor    schedule 12.07.2016
comment
Ну, не совсем spring-cloud-config, но аналог consul (который находится в документации в моем предыдущем комментарии).   -  person M. Deinum    schedule 13.07.2016
comment
@ M.Deinum Я использую эту напарницу консула. Вы разместили документацию для Spring Cloud Consul, которую, как я уже упоминал, я уже использую. Использование Spring Cloud Consul не разрешает автоматически теги @Value. Если это предполагается, то я не могу найти документацию о том, как заставить его работать таким образом, и поэтому я сделал этот пост.   -  person Seephor    schedule 15.07.2016
comment
Можете ли вы опубликовать свое приложение yml и код для получения собственности. Мне трудно прочитать ключевое значение от консула   -  person mule-user    schedule 28.10.2016


Ответы (1)


Мне удалось заставить это работать, но это было немного сложно. Вам необходимо добавить начальную зависимость Spring Cloud Consul. У меня была только конфигурационная зависимость Spring Cloud Consul.

Мне пришлось добавить свойства конфигурации consul как в свой application.yml, так и в bootstrap.yml, свойства в моем boostrap просто установили формат и ключ данных:

spring:
  cloud:
    consul:
      config:
        format: YAML
        data-key: data

Это сообщает Spring Boot загрузить yaml blob, который является значением ключевых данных в моем облачном каталоге конфигурации приложения.

Конфигурация в моем application.yml - это конфигурация по умолчанию, которую они предоставляют в примере. Как только я добавил эти конфигурации и тег @autoconfiguration в свой основной класс приложения службы, все начало работать.

person Seephor    schedule 15.07.2016