Свойства клиента конфигурации облака Spring не решаются

Я очень новичок в концепции внешних конфигураций Spring Cloud и Spring, фактически начался вчера сам.

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

Ниже приведен код, который я в основном заимствовал из различных ресурсов в Интернете.

Сервер конфигурации - application.yml:

server:
  port: 8888

spring:
  cloud:
    config:
      server:
        git:
          uri: file:///${user.home}/config-repo

Сервер конфигурации - Основной класс (начальная загрузка)

@EnableConfigServer
@SpringBootApplication
public class CloudConfigServerApplication {

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

config-repo - это локальное репозиторий git на моем компьютере, у которого есть файл .yml с именем клиентского приложения конфигурации, то есть authmanager.yml

eureka:
    client:
        serviceUrl:
            defaultZone: http://127.0.0.1:8761/eureka/
        healthcheck:
            enabled: true
        lease:
            duration: 5
spring:
    application:
        data:   
            mongodb:
                host: localhost
                port: 27017
                database: edc_mc
logging:
    level:
        org.exampledriven.eureka.customer.shared.CustomerServiceFeignClient: FULL

Теперь после запуска сервера конфигурации ниже представлены выходные данные конечной точки http: // localhost: 8888 / authmanager / default < / а> -

{"name":"authmanager","profiles":["default"],"label":"master","version":"0ca6ca7b4502b9bb6ce1bf8efeb25516682cf79a","propertySources":[{"name":"file:///C:\\Users\\username/config-repo/authmanager.yml","source":{"eureka.client.serviceUrl.defaultZone":"http://127.0.0.1:8761/eureka/","eureka.client.healthcheck.enabled":true,"eureka.client.lease.duration":5,"spring.application.data.mongodb.host":"localhost","spring.application.data.mongodb.port":27017,"spring.application.data.mongodb.database":"db_name","logging.level.org.exampledriven.eureka.customer.shared.CustomerServiceFeignClient":"FULL"}}]}

Микросервис + Конфигурация кода клиента -

bootstrap.yml -

server:
  port: 9097

spring:
  application:
    name: authmanager
  cloud:
    config:
      uri: http://localhost:8888

Клиент - Основной класс (бутстрап) -

@SpringBootApplication
@EnableDiscoveryClient
@EnableWebMvc
public class CloudLoginManagerApplication {

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

Класс контроллера в клиенте конфигурации, где я хочу использовать свойства файла конфигурации -

@RefreshScope
@RestController
@RequestMapping("/auth")
public class MyController {

    @Value("${spring.application.data.mongodb.database}")
    String env_var;

Пропуск остальной части кода для ясности.

Это ошибка, которую я получаю -

Could not resolve placeholder 'spring.application.data.mongodb.database' in string value "${spring.application.data.mongodb.database}"

Другие свойства, такие как server.port, не вызывают проблем.

Я также пробовал использовать интерфейс Environment, но он тоже возвращает null.

Любые указатели, пожалуйста, я почти зашел в тупик.

Спасибо,

AJ


person aj1984    schedule 14.09.2016    source источник
comment
Для меня это работает. Проверьте, нет ли в вашем коде опечаток.   -  person Patrick    schedule 14.09.2016
comment
Хорошо, извините за поздний ответ, у меня это сработало. каким-то образом параметр конфигурации, который я использовал, был неправильным. исходя из этого, я думал, что мой кофе изношен. В любом случае, много за отклик.   -  person aj1984    schedule 14.09.2016
comment
@ aj1984 можете ли вы сказать, что именно исправило проблему? Даже у меня такая же проблема   -  person Tushar Banne    schedule 22.06.2017


Ответы (1)


Чтобы включить облачную конфигурацию, вы должны добавить spring-cloud-starter-config в свои зависимости. Вы можете проверить, проверив / env (может потребоваться добавить исполнительный механизм), чтобы узнать, какие свойства доступны.

<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-config</artifactId>
</dependency>
person Jeff    schedule 14.09.2016
comment
Привет, Джефф, извини, что ответил поздно, у меня это сработало. каким-то образом параметр конфигурации, который я использовал, был неправильным. исходя из этого, я думал, что мой кофе изношен. В любом случае, много за отклик. - person aj1984; 14.09.2016
comment
Привет, Джефф, я снова столкнулся с той же проблемой, и, наконец, предложенная вами зависимость действительно помогла. Спасибо. - person aj1984; 15.09.2016
comment
Проще говоря, если у вас нет зависимости, она выйдет из строя без вывода сообщения об ошибке, даже если org.springframework установлен на TRACE, большое спасибо Джеффу за указание на это - person Dave; 08.08.2019