SpringCloud实现服务间调用(RestTemplate方式)
上一篇文章《springcloud搭建注册中心与服务注册》介绍了注册中心的搭建和服务的注册,本文将介绍下服务消费者调用服务提供者的过程。
本文目录
一、服务调用流程
总体流程是首先启动注册中心,服务提供者提供服务并注册到注册中心,消费者从注册中心中获取服务并执行。
实现服务调用需要有三个角色:服务注册中心、服务提供者和服务消费者,其中服务注册中心和服务提供者上一篇文章已经实现了,下面会详细演示下服务消费者搭建并调用服务的过程。
二、服务提供者
改造下上篇文章中的服务提供者,添加一个controller,usercontroller.java代码如下:
/**
* 用户服务
*/
@slf4j
@restcontroller
@requestmapping("/provider")
public class usercontroller {
static map<integer, user> usermap = new hashmap<>();
static {
//模拟数据库
user user1 = new user(1, "张三", "123456");
usermap.put(1, user1);
user user2 = new user(2, "李四", "123123");
usermap.put(2, user2);
}
/**
* 根据id 查询
*/
@requestmapping("/getuser")
public string getuser(integer id) {
user user = usermap.get(id);
return json.tojsonstring(user);
}
}
三、服务消费者
首先新建一个springboot项目,命名spring-cloud-user-consumer,然后按照下面步骤编写代码即可。
- pom.xml代码
添加eureka-server的依赖,代码如下:
<dependencies>
<dependency>
<groupid>org.springframework.boot</groupid>
<artifactid>spring-boot-starter-web</artifactid>
</dependency>
<dependency>
<groupid>org.springframework.boot</groupid>
<artifactid>spring-boot-starter-test</artifactid>
<scope>test</scope>
</dependency>
<dependency>
<groupid>org.springframework.cloud</groupid>
<artifactid>spring-cloud-starter-netflix-eureka-server</artifactid>
</dependency>
<dependency>
<groupid>org.projectlombok</groupid>
<artifactid>lombok</artifactid>
<optional>true</optional>
</dependency>
</dependencies>
<dependencymanagement>
<dependencies>
<dependency>
<groupid>org.springframework.cloud</groupid>
<artifactid>spring-cloud-dependencies</artifactid>
<version>finchley.release</version><!-- eureka版本 -->
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencymanagement>
- 启动类代码
启动类添加注解@enablediscoveryclient,添加该注解后,项目就具有了服务注册的功能,代码如下:
@enablediscoveryclient
@springbootapplication
public class springclouduserconsumerapplication {
@bean
public resttemplate resttemplate(){
return new resttemplate();
}
public static void main(string[] args) {
springapplication.run(springclouduserconsumerapplication.class, args);
}
}
- 配置文件
使用yml的配置文件,application.yml配置如下:
server:
port: 8082 #服务端口
eureka:
client:
serviceurl:
defaultzone: http://localhost:9001/eureka/
spring:
application:
name: user-service-consumer
四、服务调用实战
- 启动服务中心并注册服务
代码编写之后,按顺序启动spring-cloud-eureka、spring-cloud-user-service和spring-cloud-user-consumer,先访问注册中心http://localhost:9001/,出现下图说明注册中心和两个服务以及注册成功。
注册中心运行截图
- 服务调用
打开postman访问http://localhost:8082/consumer/getuser?id=2,出现下图后说明服务已经调用成功。
postman调用截图
到此springcloud实现服务间调用功能已经全部实现,有问题欢迎留言沟通哦!
完整源码地址:
推荐阅读
1.springcloud搭建注册中心与服务注册
2.springboot整合activemq,看这篇就够了!
3.别在 java 代码里乱打日志了,这才是正确的打日志姿势!
4.编码神器lombok,学会后开发效率至少提高一倍!
5.利用spring boot+zxing,生成二维码还能这么简单
java碎碎念公众号限时领取免费java相关资料,涵盖了java、redis、mongodb、mysql、zookeeper、spring cloud、dubbo/kafka、hadoop、hbase、flink等高并发分布式、大数据、机器学习等技术。
关注下方公众号即可免费领取:
上一篇: 荐 Python识别图片中的文字
推荐阅读
-
SpringCloud学习笔记(3):使用Feign实现声明式服务调用
-
关于springcloud实现服务之间调用
-
SpringCloud实现服务间调用(RestTemplate方式)
-
SpringCloud从入门到精通教程(三)- 服务消费者,实现方式一(ribbon)
-
用SpringCloud Alibaba搭建属于自己的微服务(十四)~基础搭建~使用springcloud openfeign实现rpc调用
-
RestTemplate 调用SpringCloud服务
-
Spring RestTemplate实现服务间的远程调用完整代码示例
-
springCloud微服务之间通过feign调用方式上传文件找不到文件解决方案
-
Springcloud RestTemplate服务调用代码实例
-
解决服务间调用的三种传统方式