2015-05-03 3 views
7

Я по этой ссылке: http://cloud.spring.io/spring-cloud-config/spring-cloud-config.html#_client_side_usageвесна облако конфигурации клиент не загружает конфигурацию из конфигурации сервера

Я проверил это снова и снова, и не видя Spring облако клиент загружается конфигурация из облака сервера, пожалуйста, помогите, чтобы увидеть, где находится ошибка:

РОМ:

<dependencies> 
    <dependency> 
     <groupId>org.springframework.cloud</groupId> 
     <artifactId>spring-cloud-starter</artifactId> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-web</artifactId> 

    </dependency> 
</dependencies> 

Применение:

@Configuration 
@EnableAutoConfiguration 
@RestController 
public class ConfigclientApplication { 

    @Value("${spring.cloud.config.uri}") 
    String url; 

    @Value("${production.host}") 
    String host; 


    @RequestMapping("/") 
    public String home() { 
     return "Host is => " + this.host ; 
    } 

    public static void main(String[] args) { 
     SpringApplication.run(ConfigclientApplication.class, args); 
    } 
} 

bootstrap.properties: spring.cloud.config.uri = http://localhost:8888

  1. Сервер конфигурации хорошо: http://localhost:8888/spirent/default

    { "имя": "Spirent", "профили": [ "по умолчанию"], "метка": "мастер", "propertySources": [{ "имя": "Путь к классам: /spirent.yml", "источник": { "production.host": "сервер1", "производство. порт ": 9999," production.value1 ": 12345," test.host ":" server2.com "," test.port ": 4444," test.value ":" hello123 "}}]}

  2. сейчас http://localhost:8080/ не может быть запущен вообще.

    Ошибка при создании компонента с именем 'configclientApplication' Казалось, что автоматическое вложение @Value не может найти значение production.host.

Как я могу прочитать конфигурацию на клиенте после загрузки с сервера конфигурации?

Благодарим за помощь.

+0

Если вы следуете учебник затем следовать учебнику. В руководстве упоминается, что вы должны использовать зависимость «spring-cloud-starter», а не «spring-cloud-config-client». Для приложения не имеет значения, откуда приходит конфигурация, это просто свойства, к которым вы можете получить доступ, как и любое другое свойство, через «Среда» или с помощью «@ Value». –

+0

Я изменил оба клиента или стартер, но не могу узнать значение конфигурации на сервере конфигурации, любую идею? – user3006967

ответ

4

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

<parent> 
    <groupId>org.springframework.cloud</groupId> 
    <artifactId>spring-cloud-starter-parent</artifactId> 
    <version>1.0.0.RELEASE</version> 
    <relativePath /> <!-- lookup parent from repository --> 
</parent> 

Во-вторых, в качестве новой дисциплины (и, вероятно, не ваша проблема здесь), я хотел бы использовать новую аннотацию на вашей заявке вместо @Configuration и @EnableAutoConfiguration

@SpringBootApplication 

В-третьих, дважды проверьте, что у вас @EnableConfigServer на вашем сервере конфигурации.

В-четвертых, будьте уверены, что ваш бутстрап.свойства на вашем клиенте указано ваше пружинное имя приложения:

spring.application.name=spirent 

Наконец, если вы использовали весенне-облачные конфигурации примера проект, есть пользователь по умолчанию и пароль безопасности, вы должны установить в своем URI:

http://user:[email protected]:8888 

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

https://github.com/spring-cloud/spring-cloud-config 
+0

Спасибо @RubesMN, решающее исправление добавляет: spring.application.name = myapp to bootstrap.properties, а затем я вижу - {"profiles": [], "configService: classpath: /myapp.yml": { «my.otherprop»: «myotherval»}, «from/env». Теперь вы можете ответить на другой вопрос, как я могу получить доступ к значению конфигурации в конфигурационном клиенте? Я попробовал @Value ($ {profiles)), и код не может Спасибо, – user3006967

+0

. Вы получите доступ к использованию объявления переменной, аннотированной с помощью '@Value (" $ {my.otherprop} ")' или через класс, аннотированный с помощью '@Component @ConfigurationProperties (prefix =" my ")', содержащий переменную, называемую «otherprop». Обязательно отметьте ответ как правильный для просмотра другими. – RubesMN

+0

Я также замечаю, что аннотированные переменные '@ Value' не обновляются, если только компонент весны, в котором они содержатся, имеет' @ RefreshScope' и вызов конечной точки клиента/обновления. Константы '@ Value' или' @ ConfigurationProperties' обновляются с сервера конфигурации, когда вызывается/env, как написано в документации. – RubesMN

Смежные вопросы