今天在写代码时,突然遇到了这个错
Could not autowire. No beans of ‘RestTemplate’ type found. less…
(Ctrl+F1) Inspection info:Checks autowiring problems in a bean class.
image.png
发现网上的一些解决方案竟然是在 Intellij Idea中设置一下:
Settings - Editor - Inspections - Spring - Spring Core - Code - Autowiring for Bean Class - disable(idea2017是把√去掉)
关掉这种提示,这不是自欺欺人么?
真正解决方案:
1.添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
2.在一个配置类中定义这个类,即可正确修复
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
image.png
使用RestTemplate调用服务的时候报错:java.net.UnknownHostException,根据服务名调用不通提供者的地址
解决方案:
#消费者的pom中加上ribbon的依赖
<!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-netflix-ribbon -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
<version>2.1.2.RELEASE</version>
</dependency>
#RestTemplate配置备案上增加注解@LoadBalanced
@Configuration
public class ConfigBean {
@Bean
@LoadBalanced
public RestTemplate restTemplate() {
return new RestTemplate();
}
}
最终访问ok,结果图如下:
网友评论