gpt4 book ai didi

java - 无法自动接线。找不到 'RestTemplateBuilder' 类型的 bean

转载 作者:行者123 更新时间:2023-12-05 01:09:57 24 4
gpt4 key购买 nike

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

  1. IntelliJ 版本 - 2020.2
  2. Spring - 2.3.3.RELEASE
  3. Java - 11

第 1 期 - 当我尝试创建 RestTemplateConfiguration 类时,出现错误 -无法 Autowiring 。未找到“RestTemplateBuilder”类型的 bean。

@Configuration
public class RestTemplateConfiguration {
@Bean
public RestTemplate restTemplate(RestTemplateBuilder builder) {
return builder.build();
}
}

第 2 期 如果我创建 RestTemplateBuilder 的新对象,它不会给出错误,但这不是我希望这个类的行为方式。此外,在类(如下所述)SamplePhoneNumbers.java 中,这似乎不起作用,我尝试使用 RestTemplate restTemplate。它以 null 的形式出现。

@Configuration
public class RestTemplateConfiguration {
@Bean
public RestTemplate restTemplate() {
RestTemplateBuilder builder = new RestTemplateBuilder;
return builder.build();
}
}

这是发送通知的类,也是我尝试使用 Rest 模板的地方。

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

第三期:有什么办法可以摆脱 getInstance() 方法,这样我就不必处理单例逻辑了?如果我可以将类创建为 bean,我猜应该可以,但我不确定在这种情况下如何实现。

由于这是一个库,它没有 main 方法,也没有 @SpringBootapplicationContext。

有人可以帮我解决吗?

最佳答案

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

@Bean
public RestTemplateBuilder restTemplateBuilder() {
return new RestTemplateBuilder();
}

关于java - 无法自动接线。找不到 'RestTemplateBuilder' 类型的 bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64689386/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com