2016-11-11 6 views
0

Мы планируем перенести содержание наших многочисленного .properties файлов в консул я реализовал демку со следующим определениемОтказа читать удаленные собственности с помощью Spring Cloud консула

@EnableAutoConfiguration 
@SpringBootApplication 
@EnableDiscoveryClient 
@RestController 
@EnableConfigurationProperties 
public class Application { 

    @Autowired 
    private Environment env; 

    @RequestMapping("/") 
    public String home() { 
     return env.getProperty("dc1/kv/property1/"); 
    } 
} 

с сервером консула работает на по умолчанию

  • локальный: 8500
  • данных имя центра = DC1
  • имя узла = IT051080
  • Имя службы = Консул-Demo я добавил свойство вручную из веб-интерфейса, он может быть доступ из http://localhost:8500/ui/#/dc1/kv/property1

в момент env.getProperty("dc1/kv/property1/");возвращает ничего

мой ПОМ выглядит следующим образом

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

<properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    <java.version>1.8</java.version> 
</properties> 

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-maven-plugin</artifactId> 
     </plugin> 
    </plugins> 
</build> 

<dependencyManagement> 
    <dependencies> 
     <dependency> 
      <groupId>org.springframework.cloud</groupId> 
      <artifactId>spring-cloud-dependencies</artifactId> 
      <version>Brixton.SR6</version> 
      <type>pom</type> 
      <scope>import</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.cloud</groupId> 
      <artifactId>spring-cloud-consul-dependencies</artifactId> 
      <version>1.0.2.RELEASE</version> 
      <type>pom</type> 
      <scope>import</scope> 
     </dependency> 
    </dependencies> 
</dependencyManagement> 

<dependencies> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-actuator</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-web</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.cloud</groupId> 
     <artifactId>spring-cloud-starter-consul-all</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-test</artifactId> 
     <scope>test</scope> 
    </dependency> 
</dependencies> 

может ли кто-нибудь пролить некоторые огни, пожалуйста,

+0

Вы можете поделиться bootstrap.yml? –

ответ

1

Вы не ссылаетесь на такие свойства, как консул, вы ссылаетесь на них как на весенние свойства. По умолчанию spring-cloud-consul выглядит под контекстом /config. Вам нужно будет поставить property1 в /config/property1 и указать его через env.getProperty("property1"). Для /config/foo/property вы ссылаетесь на foo.property в среде весны.

+0

да, это сработало и с фактическим разработчиком облачных консулов, отвечая на мой вопрос, сделанный мой день! Я все еще не понимаю концепцию профиля в консуле, если я создаю свойство как/config/myApp, dev/property1, как я могу его прочитать со стороны Java Spring? мне нужно аннотировать мой контроллер с помощью @profile? –

+0

комплект 'spring.profiles.active = dev'. '@ Профиль' используется, чтобы ограничить конфигурацию или компонент только созданным, если этот профиль активен. См. Http://docs.spring.io/autorepo/docs/spring-boot/current/reference/html/boot-features-profiles.html. – spencergibb

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

  • Нет связанных вопросов^_^