【问题标题】:how to define Bean to `RestTemplate`?如何将 Bean 定义为“RestTemplate”?
【发布时间】:2019-02-14 10:11:25
【问题描述】:

我正在尝试使用来自Spring-clientRestTemplate

我不能使用RestTemplate,因为这个类没有bean

 public BusinessBankingTemplate(RestTemplate restTemplate) {
        this.restTemplate = restTemplate;
    }

我试图找到一些文档,例如从这个 https://docs.micronaut.io/latest/guide/index.html#factories

但我仍然不知道如何在 Java 语言上实现它

这是我的错误日志。

Message: No bean of type [org.springframework.web.client.RestTemplate] exists. Ensure the class is declared a bean and if you are using Java or Kotlin make sure you have enabled annotation processing.
Path Taken: new TransactionCheckerJob(BcaService bcaService,Oauth2Template oauth2Template,[BusinessBankingTemplate businessBankingTemplate]) --> new BusinessBankingTemplate([RestTemplate restTemplate])
        at io.micronaut.context.AbstractBeanDefinition.getBeanForConstructorArgument(AbstractBeanDefinition.java:981)
        at bank.transaction.service.impl.$BusinessBankingTemplateDefinition.build(Unknown Source)
        at io.micronaut.context.DefaultBeanContext.doCreateBean(DefaultBeanContext.java:1331)
        at io.micronaut.context.DefaultBeanContext.createAndRegisterSingleton(DefaultBeanContext.java:1914)
        at io.micronaut.context.DefaultBeanContext.getBeanForDefinition(DefaultBeanContext.java:1635)

【问题讨论】:

  • 您能否复制/粘贴您收到的实际错误消息?
  • @Matt 请看我更新的帖子
  • 好的,看起来您正在尝试使用 Spring 的自动装配来传递其余模板对象,但您需要在此处共享更多代码。您究竟在哪里创建 RestTemplate?
  • “好吧,看起来你正在尝试使用 Spring 的自动装配来传递其余模板对象” - 为什么这么说?
  • 在我看来,Micronaut 的 DI 容器正在尝试进行注入,但没有注册 RestTemplate bean。我没有看到 Spring 在这里进行任何自动装配的任何证据。

标签: micronaut


【解决方案1】:

在尝试找到一些文档后,我发现 micronaut 用户指南有一个功能,可以像这样将其他类注册到 bean。

@Factory
public class RestTemplateFactory {

    @Bean
    @Singleton
    public RestTemplate v8Engine() {
      return new RestTemplate();
    }
}

这段代码运行良好:)

【讨论】:

    猜你喜欢
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-12
    • 1970-01-01
    • 2018-07-02
    • 1970-01-01
    相关资源
    最近更新 更多