从小白开始学习SpringCloud(三)
我看的博客还是以前那个这次就不付链接了,以为他的博客着一块有问题,弄得我解决了半天,一个菜鸟解决的问题真的时费劲
我们来看下消费者的一些进阶
(一)使用消费者获取生产者传递的类
(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出现如下内容
(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")就可以了