zoukankan      html  css  js  c++  java
  • 从小白开始学习SpringCloud(二)

    话不多说还是先附上大佬博客:https://blog.csdn.net/springcyb/article/details/89147639

    这一次我们来记录一下消费者的使用,上面这个博客对于新手来说我觉得不是特别的好,因为按上面操作会遇到很多坑,博主的博客没有问题但是有一些内容没写清楚,要是新手自己脑补会无法调试

    1.继续在上一次的项目中创建一个spring initialzr项目,起名为spring_ribbon

    2.配置端口

    server:
      port: 8021
    
    spring:
      application:
        name: springcloud-myribbon
    
    eureka:
        client:
            service-url:
                defaultZone: http://localhost:8000/eureka

    3.修改主java文件

    在工程的启动类中,通过@EnableDiscoveryClient向服务中心注册;并且向程序的ioc注入一个bean: restTemplate;并通过@LoadBalanced注解表明这个restRemplate开启负载均衡的功能

    package com.example.springcloud_myribbon;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.client.loadbalancer.LoadBalanced;
    import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
    import org.springframework.context.annotation.Bean;
    import org.springframework.web.client.RestTemplate;
    
    @EnableEurekaClient
    @SpringBootApplication
    public class SpringcloudMyribbonApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(SpringcloudMyribbonApplication.class, args);
        }
        // 将RestTemplate注入到spring容器中
        // LoadBalanced负载均衡默认为轮询
        // 通过注入在controller中就可以使用调用生产者实例
        @Bean
        @LoadBalanced
        RestTemplate restTemplate() {
            return new RestTemplate();
        }
    
    
    }

    3.消费者调用生产者

    在之前的生产者springcloud-provider操作,建立一个UserController类,一定要看下面的目录结构这个很重要,很重要,很重要

    UserController类所在的包和SpringcloudProviderApplication放在同一个目录下,SpringcloudProviderApplication在运行时只会配置自己子目录下的文件

    代码如下

    package com.example.springcloudprovider.controller;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.ResponseBody;
    
    @Controller
    
    public class UserController {
        /**
         * 测试
         *
         * @return
         */
        @GetMapping("testPro")
        @ResponseBody
        public String test() {
            System.out.println("ribbon调用生产者成功");
            return "success";
    
        }
    }

     开始操作新建的spring_ribbon

    同样新建一个UserController,目录结构参考上面的,记住目录结构很重要,代码如下

    package com.example.springcloud_myribbon.controller;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
    import org.springframework.web.client.RestTemplate;
    
    @RestController
    public class UserController {
    
        @Autowired
        private RestTemplate restTemplate;
    
        /**
         * 调用生产者
         */
    
        //调用请求
        //get  查
        //Post  增
        //delete 删
        //put 改
        @GetMapping("testPro")
        public String select(){
    
            String result = restTemplate.getForObject("http://SPRINGCLOUD-USER-REG/testPro",String.class);
            return result;
        }
    }

     4.运行项目,然后打开http://127.0.0.1:8021/testPro出现如下结果

    5错误总结

    如果显示的是404说明在调用过程中路径除了问题,有可能是地址写错了,也有可能时一些注解的错误,把主流程认真核对下

    如果是500的问题,我遇到的就是文件目录结构的问题,一定记住Controller要在SpringcloudProviderApplication的子目录下

  • 相关阅读:
    mysql之指定为definer的用户不存在
    Hibernate报错:org.hibernate.ObjectNotFoundException: No row with the given identifier exists 解决办法
    MongoDB mongo.exe启动及闪退解决 转载
    pycharm下运行unittest的问题
    mysql大小写敏感与校对规则
    windows7环境下使用pip安装MySQLdb
    HTML中title前面小图标和网站收藏现实的图标
    异步发送的请求---取消操作
    视频文件上传遇到的问题
    vue-devtools 必备开发工具
  • 原文地址:https://www.cnblogs.com/837634902why/p/10958585.html
Copyright © 2011-2022 走看看