Java 改为;“评估”;弹簧特性值
我当前的application.yaml-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
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
}