【问题标题】:Autowire service to use inside bean在 bean 内部使用的 Autowire 服务
【发布时间】:2020-11-05 15:17:57
【问题描述】:

是否有可能以某种方式自动装配服务并在另一个 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();
}

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

【问题讨论】:

    标签: java spring spring-boot kotlin autowired


    【解决方案1】:

    当然可以。 试试这样:

    @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();
    }
    

    您还可以将字符串值移动到属性文件。这是配置类的更好方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-16
      • 1970-01-01
      相关资源
      最近更新 更多