在 bean 内部使用的自动装配服务

Autowire service to use inside bean

是否有可能以某种方式自动装配服务并在另一个 bean 中使用它? 我有这个:

@Bean
public RouteLocator gatewayRoutes(RouteLocatorBuilder builder) {
    return builder.routes()
                  .route(r -> r.path("/api/wallet/slot/thunderkick/**") //intercept calls to
                                   .uri("http://mrq-wallet-forwarder.mircloud.host/") //forward to
                               .id("thunderkickModule"))
                  .build();
}

但我需要它,而这似乎不是正确的方法:

@Bean
public RouteLocator gatewayRoutes(RouteLocatorBuilder builder, 
                ***@Autowired val discoveryService: AccountDiscoveryService***) {
    return builder.routes()
                  .route(r -> r.path("/api/wallet/slot/thunderkick/**") //intercept calls to
                               .uri(discoveryService.getHost()) //forward to
                               .id("thunderkickModule"))
                  .build();
}

任何建议都会非常有用和感激。 提前谢谢你

当然可以。 像这样尝试:

@Bean
public RouteLocator gatewayRoutes(RouteLocatorBuilder builder, 
                      @Autowired AccountDiscoveryService discoveryService) {
    //Objects.requiredNotNull(discoveryService); //null check if discoveryService can be null
    return builder.routes()
                  .route(r -> r.path("/api/wallet/slot/thunderkick/**") //intercept calls 
                               .uri(discoveryService.getHost()) //forward to
                               .id("thunderkickModule"))
                  .build();
}

您还可以将字符串值移动到 属性 文件。这是配置 类.

的更好方法