Прочитать «оцененные» значения свойств Spring - PullRequest
1 голос
/ 22 апреля 2020

Мой текущий application.yaml имеет -

spring:
  application:
    name: app-gateway
  cloud:
    gateway:
      routes:
        - id: app-1
          uri: ${services.app1.host}/pages/
          predicates:
            - Path=/pages/**
        - id: app-2
          uri: ${services.app1.host}/content/
          predicates:
            - Path=/content/**

services:
  app1:
    host: http://app1.hostname:8080
  app2:
    host: http://app2.hostname:8080

В моем приложении мне нужно получить "оцененные" значения URI маршрута шлюза

Если я прочитал все значения, используя Environment и l oop по всем свойствам, я получаю URI со встроенными переменными, такими как ${services.app1.host}.

Кроме того, я не хочу использовать @Value для каждого комбинированного маршрута / URI.

Как мне получить Карту всех оцененных значений в spring.cloud.gateway.routes?

1 Ответ

1 голос
/ 22 апреля 2020

Вы можете использовать @ConfigurationProperties в новом классе, содержащем сопоставленные значения свойств:

@ConfigurationProperties(prefix = "spring.cloud.gateway")
public class RouteProperties {
    private List<RoutePropertyEntry> routes;

    //Getter and setter for routes
}

С POJO для сопоставления каждой записи маршрута:

public class RoutePropertyEntry {
    private String id;
    private String uri;
    private List<String> predicates;

    //Getters and setters...
}

И получить свойство значения как это:

@Component
@EnableConfigurationProperties(RouteProperties.class)
public class SomeLogicClass {
    private final RouteProperties routeProperties;

    //Your logic here
}
...