spring - Autowiring 参数作为bean声明参数

标签 spring kotlin spring-cloud spring-cloud-config spring-cloud-gateway

我有

@Bean
public RouteLocator gatewayRoutes(RouteLocatorBuilder builder) {
    return builder.routes()
                  .route(r -> r.path("/employee/**")
                               .uri("http://localhost:8081/")
                               .id("employeeModule"))
                  .build()
但是我想拥有一个动态派生的值,而不是http:://localhost:8081/,例如:
@Bean
public RouteLocator gatewayRoutes(RouteLocatorBuilder builder,
                                  @Autowired val discoveryService: DiscoveryService) {
    return builder.routes()
                  .route(r -> r.path("/employee/**")
                               .uri(discoveryService.getHost())
                               .id("employeeModule"))
这可能吗?如何更改语法以自动连接DiscoveryService?

最佳答案

像这样尝试:

    RouteLocatorBuilder.Builder routes = builder.routes();
    discoveryClient.getServices().forEach(service->routes.route(r -> r.path("/"+service+"/**")
            .uri("lb://"+service).id(service)));
    return routes.build();

关于spring - Autowiring 参数作为bean声明参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64589616/

相关文章:

spring-cloud - Spring Cloud Feign : Is Feign efficient enough compared with RestTemplate?

spring - 如何使用基本身份验证保护 spring cloud eureka 服务?

java - Hibernate 孤儿删除日志记录

java - Spring MVC + JAXB : ServletException: Unable to locate object to be marshalled in model

java - 与 Room 的多对多关系导致错误 : Entities and Pojos must have a usable public constructor

windows - Kotlin JS客户端和JVM服务器构建Webpack SyntaxError

javascript - 当 Controller 返回空结果时,如何在jsp中显示空值?

java - 测试时,Web 服务中的 Spring Autowired 不工作

android - 如何修复由目的地引起的膨胀错误不是此 NavGraph 的直接子级

spring-boot - Spring Cloud Stream 错误处理...错误