从小白开始学习SpringCloud(三)

时间:2022-08-31 19:48:27

我看的博客还是以前那个这次就不付链接了,以为他的博客着一块有问题,弄得我解决了半天,一个菜鸟解决的问题真的时费劲

我们来看下消费者的一些进阶

(一)使用消费者获取生产者传递的类

(1)新建一个spring inistrltr项目这就不多,已经新建好几次了,命名为common用于放类文件,我们不可能在生产者和消费者中都写一个java去放置类文件(当然要是不嫌麻烦也没啥大问题,但是在开发过程中这种冗余重复的代码是致命的)

在common下新建一个java类命名为User的代码如下

package com.example.common;

public class User {
    private Integer userId;
    private String userName;



    public Integer getUserId() {
        return userId;
    }

    public void setUserId(Integer userId) {
        this.userId = userId;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    @Override
    public String toString() {
        return "User{" +
                "userId=" + userId +
                ", userName='" + userName + '\'' +
                '}';
    }
}

这个项目只是用放置类文件的,只要在其他使用到common中的类的项目中添加他的依赖就好了,这个项目在调试过程中不需要运行

(2)在生产者和消费者的pom.xml文件中添加common的依赖,代码如下,不建议复制,复制的话回报错,也就三行自己敲把

 <dependency>
            <groupId>com.example</groupId>
            <artifactId>common</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>

这样就可以在生产者和消费者中使用commom中的User 类了

(3)在生产者中的UserController中在添加一个方法,返回一个类对象,使用@RequestMapping("testPro0"),切记不要使用@PostMapping这个会报错405

 @RequestMapping("testPro0")
    @ResponseBody
    public User save(@RequestBody User user){
        user.setUserId(11);
        return user;
    }

(4)在消费者的UserController中添加如下代码来获取生产者给的User类,同样使用@RequestMapping("testPro0")

 @RequestMapping("testPro0")
    public User save(){
        User user = new User();
        user.setUserName("路明非");
        User user1 = restTemplate.postForObject("http://SPRINGCLOUD-USER-REG/testPro0", user, User.class);
        return user1;
    }

(5)然后运行项目,在地址栏中输入http://127.0.0.1:8021/testPro0出现如下内容

从小白开始学习SpringCloud(三)

(5)错误总结,没报错直接跳过这个不用看

This application has no explicit mapping for /error, so you are seeing this as a fallback.

Sat Jun 01 10:49:59 CST 2019
There was an unexpected error (type=Not Found, status=405).
Request method 'GET' not supported
这个错误是因为 使用了@PostMapping只需要将它换成 @RequestMapping("testPro0")就可以了