本文目录
一、服务调用流程
总体流程是首先启动注册中心,服务提供者提供服务并注册到注册中心,消费者从注册中心中获取服务并执行。
实现服务调用需要有三个角色:服务注册中心、服务提供者和服务消费者,其中服务注册中心和服务提供者上一篇文章已经实现了,下面会详细演示下服务消费者搭建并调用服务的过程。
二、服务提供者
改造下上篇文章中的服务提供者,添加一个controller,UserController.java代码如下:/**
* 用户服务
*/
@Slf4j
@RestController
@RequestMapping("/provider")
public class UserController{
static Map 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的依赖,代码如下:
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-test
test
org.springframework.cloud
spring-cloud-starter-netflix-eureka-server
org.projectlombok
lombok
true
org.springframework.cloud
spring-cloud-dependencies
Finchley.RELEASE
pom
import
启动类代码
启动类添加注解@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实现服务间调用功能已经全部实现,有问题欢迎留言沟通哦!
完整源码地址: https://github.com/suisui2019/springboot-studyJava碎碎念公众号