首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法自动布线。没有找到'RestTemplateBuilder‘类型的bean

无法自动布线。没有找到'RestTemplateBuilder‘类型的bean
EN

Stack Overflow用户
提问于 2020-11-05 00:01:15
回答 2查看 4.2K关注 0票数 3

我有一个Java库(不是应用程序),它通过电话号码发送通知。我使用Rest模板发送POST请求。但是,我不想创建RestTemplate的新对象,而是使用RestTemplateConfiguration @Configuration来实现。

  1. IntelliJ版本- 2020.2
  2. Spring -
  3. - 11

第一期-当我试图创建一个RestTemplateConfiguration类时,我得到了错误- Could not autowire. No beans of 'RestTemplateBuilder' type found.

代码语言:javascript
运行
复制
@Configuration
public class RestTemplateConfiguration {
    @Bean
    public RestTemplate restTemplate(RestTemplateBuilder builder) {
        return builder.build();
    }
}

第二期如果我创建了一个新的RestTemplateBuilder对象,它不会给出错误,但这不是我希望这个类的行为方式。而且,当在类(下面提到) SamplePhoneNumbers.java中,我尝试使用RestTemplate restTemplate时,这似乎不起作用。它将以空的形式出现。

代码语言:javascript
运行
复制
@Configuration
public class RestTemplateConfiguration {
    @Bean
    public RestTemplate restTemplate() {
        RestTemplateBuilder builder = new RestTemplateBuilder;
        return builder.build();
    }
}

下面是发送通知的类,以及我试图使用Rest模板的地方。

代码语言:javascript
运行
复制
@Slf4j
public class SamplePhoneNumbers implements SampleClassStratergy {

    RestTemplate restTemplate;
    private static SamplePhoneNumbers samplePhoneNumbers = null;
    private String phoneNumbersNotificationServiceURL = Enums.NotificationURL.enum_value + Enums.PhoneNumberApi.enum_value;

    SamplePhoneNumbers() {
        this.restTemplate = new RestTemplate();
    }

    public static SamplePhoneNumbers getInstance() {
        if(samplePhoneNumbers ==null) {
            samplePhoneNumbers = new SamplePhoneNumbers();
        }
        return samplePhoneNumbers;
    }

    @Async
    public void sendNotification(String title, String message, List<String> listOfPhoneNumbers) {
        SmsMessage smsMessage= new SmsMessage(title, message, listOfPhoneNumbers, Collections.emptyList(), Collections.emptyList());

        try {
            HttpEntity<SmsMessage> newRequest = new HttpEntity<>(smsMessage);
            restTemplate.postForObject(phoneNumbersNotificationServiceURL, newRequest, String.class);
            log.info("Notification sent via phone number.");
        } catch (Exception e) {
            log.error(e.getMessage());
        }
    }
}

第3期:有没有办法摆脱getInstance()方法,这样我就不必处理单例逻辑了?如果我可以以bean的形式创建类,我想这应该是可行的,但我不确定如何在这种情况下实现这一点。

因为这是一个库,所以没有主方法,也没有@SpringBootapplicationContext。

有人能帮我解决这个问题吗?

EN

Stack Overflow用户

发布于 2021-07-11 12:18:49

在运行Junit测试用例时,我也得到了类似的错误,并通过添加以下bean来解决-

代码语言:javascript
运行
复制
@Bean
public RestTemplateBuilder restTemplateBuilder() {
    return new RestTemplateBuilder();
}
票数 5
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64689386

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档