zoukankan      html  css  js  c++  java
  • Consider defining a bean of type 'org.springframework.web.client.RestTemplate' in your configuration

    https://www.cnblogs.com/EasonJim/p/7546136.html


    错误如下:

    复制代码
    ERROR 31473 --- [           main] o.s.b.d.LoggingFailureAnalysisReporter   : 
    
    ***************************
    APPLICATION FAILED TO START
    ***************************
    
    Description:
    
    Field restTemplate in org.springframework.cloud.zookeeper.discovery.dependency.DependencyRestTemplateAutoConfiguration required a bean of type 'org.springframework.web.client.RestTemplate' that could not be found.
    
    
    Action:
    
    Consider defining a bean of type 'org.springframework.web.client.RestTemplate' in your configuration.
    复制代码

    解决方法:

    复制代码
    import org.springframework.cloud.client.loadbalancer.LoadBalanced;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.web.client.RestTemplate;
    
    @Configuration
    public class Config {
    
        @Bean
        @LoadBalanced
        public RestTemplate restTemplate() {
            return new RestTemplate();
        }
    }
    复制代码

    说明:可以封装一个Cinfig类,最主要是红色部分的RestTemplate,当然,可以直接在别的地方注入红色部分代码即可。而且,如果哪个组件上注解了这个方法,其余都可以不用,只是一次注解即可。

    解释说明:

    以上的代码是从官方的例子代码发现的:https://github.com/spring-cloud/spring-cloud-zookeeper/blob/master/spring-cloud-zookeeper-sample/src/main/java/org/springframework/cloud/zookeeper/sample/SampleZookeeperApplication.java

    如果RestTemplate没有定义,您将看到错误

    Consider defining a bean of type 'org.springframework.web.client.RestTemplate' in your configuration.

    或者

    No qualifying bean of type [org.springframework.web.client.RestTemplate] found

    如何通过注解定义RestTemplate

    这取决于你使用的是什么版本的技术会影响你如何定义你的“配置类RestTemplate。

    Spring >=4且没有Spring Boot

    简单地定义一个@Bean

    @Bean
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }

    Spring Boot<=1.3

    无需定义,Spring Boot自动为您定义了一个。

    Spring Boot >= 1.4

    Spring Boot不再自动定义一个RestTemplate,而是定义了一个RestTemplateBuilder允许您更好地控制所RestTemplate创建的对象。你可以RestTemplateBuilder在你的@Bean方法中注入一个参数来创建一个RestTemplate

    @Bean
    public RestTemplate restTemplate(RestTemplateBuilder builder) {
       // Do any additional configuration here
       return builder.build();
    }

    在你的类上使用它

    @Autowired
    private RestTemplate restTemplate;

    或者

    @Inject
    private RestTemplate restTemplate;

    参考:

    https://stackoverflow.com/questions/28024942/how-to-autowire-resttemplate-using-annotations

    https://gist.github.com/RealDeanZhao/38821bc1efeb7e2a9bcd554cc06cdf96

  • 相关阅读:
    Docker安装及基本命令
    SpringBoot-获取YAML文件值
    SpringBoot-YAML语法
    Maven仓库
    第一次使用Maven
    初始Maven
    索引的基本使用与创建选择
    了解索引为什么能快速查找数据
    Mysql的执行顺序与优化分析
    Mysql常用的几种join连接方式
  • 原文地址:https://www.cnblogs.com/xiang--liu/p/11584690.html
Copyright © 2011-2022 走看看