Java 改为;“评估”;弹簧特性值

Java 改为;“评估”;弹簧特性值,java,spring-boot,spring-el,Java,Spring Boot,Spring El,我当前的application.yaml- spring: application: name: app-gateway cloud: gateway: routes: - id: app-1 uri: ${services.app1.host}/pages/ predicates: - Path=/pages/** - id: app-2 ur

我当前的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
读取所有值并循环所有属性,我将获得带有嵌入变量的uri,如
${services.app1.host}

另外,我不想对每个route/uri组合使用
@Value


如何获取
spring.cloud.gateway.routes
下所有评估值的映射?

您可以在包含映射属性值的新类上使用
@ConfigurationProperties

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

    //Getter and setter for routes
}

几分钟前我想出了完全相同的解决方案
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
}