栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

使用Spring Boot快速构建服务提供和服务消费者

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用Spring Boot快速构建服务提供和服务消费者

使用Spring Boot快速构建服务提供和服务消费者

文章目录
  • 使用Spring Boot快速构建服务提供和服务消费者
    • 问题
    • 方案
    • 快速构建项目
    • 代码仓库
    • 公众号
    • 参考

问题

使用微服务构建的是分布式系统,微服务之间通过网络进行通信。我们使用服务提供者与服务消费者来描述微服务之间的调用关系。

  • 服务提供者:服务的被调用方(即:为其他服务提供服务的服务)
  • 服务消费者:服务的调用方(即:依赖其他服务的服务

我们以电影售票系统为例,如图,用户向电影微服务发起了一个购票的请求。在进行购票的业务操作前,电影微服务需要调用用户微服务的接口,查询当前用户的余额是多少,是不是符合购票标准等。

在这种场景下,用户微服务就是一个服务提供者,电影微服务是一个服务消费者。

问题:如何基于 Spring Boot 快速构建服务提供者和服务消费者?

方案

方案说明: 使用 IDEA 的 Spring Initializr 可以快速构建 Spring Boot 项目,为便于
测试,使用 Spring Data JPA 为持久层框架,使用 H2 作为数据库。

技术选型:

  • JDK 1.8
  • Spring Boot 1.4.3.RELEASE
  • Spring Cloud Camden SR4
  • 持久层框架:Spring Data JPA
  • 数据库: H2
  • 项目构建:Maven

项目依赖:

服务提供者:micro-simple-provider-user

    
        org.springframework.boot
        spring-boot-starter-parent
        1.4.3.RELEASE
    
    
    
        
            org.springframework.boot
            spring-boot-starter-web
        
        
            org.springframework.boot
            spring-boot-starter-data-jpa
        
        
            com.h2database
            h2
            runtime
        
    
    
    
        
            
                org.springframework.cloud
                spring-cloud-dependencies
                Camden.SR4
                pom
                import
            
        
    

服务消费者:micro-simple-consumer-movie

    
        org.springframework.boot
        spring-boot-starter-parent
        1.4.3.RELEASE
    
    
    
        
            org.springframework.boot
            spring-boot-starter-web
        
    
    
    
        
            
                org.springframework.cloud
                spring-cloud-dependencies
                Camden.SR4
                pom
                import
            
        
    

服务提供者数据库脚本

  • 在 micro-simple-provider-user 的 resources 目录下创建 schema.sql 表结构创建脚本和 data.sql 表数据初始化脚本。
-- schema.sql
drop table user if exists ;
create table user (
    id bigint generated by default as identity,
    username varchar(40),
    name varchar(20),
    age int(3),
    balance decimal(10,2),
    primary key(id)
);
-- data.sql
insert into user(id,username,name,age,balance) values(1, 'account1', '张三', 20, 100.00);
insert into user(id,username,name,age,balance) values(2, 'account2', '李四', 28, 180.00);
insert into user(id,username,name,age,balance) values(3, 'account3', '王五', 32, 280.00);

服务提供者配置

  • 指定服务启动端口及 Spring Data JPA 配置
server:
  port: 8000

spring:
  jpa:
    generate-ddl: false
    show-sql: true
    hibernate:
      ddl-auto: none
  datasource:
    platform: h2
    schema: classpath:schema.sql
    data: classpath:data.sql

服务提供者 Controller 、 Dao 代码编写

@RestController
@RequestMapping("/user/v1")
public class UserController {
    @Resource
    private UserRepository userRepository;

    @GetMapping("/{id}")
    public User findById(@PathVariable Long id){
        User entity = userRepository.findOne(id);
        return entity;
    }
}

服务消费者使用 RestTemplate 调用接口

@Configuration
public class RestConfig {
    @Bean
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }
}

@RestController
@RequestMapping("/movie/v1")
public class MovieController {

    @Resource
    private RestTemplate restTemplate;

    @GetMapping("/{id}")
    public User findById(@PathVariable Long id){
        User entity = restTemplate.getForObject("http://localhost:8000/user/v1/"+id, User.class);
        return entity;
    }
}
快速构建项目

使用 IDEA 的 Spring Initializr 构建

1.点击 File->New->Project 开始构建项目,选择 Spring Initializr ,

可以选择默认的 Spring 官方默认的工程脚手架 https://start.spring.io/ ,

使用 阿里云的 Spring Boot 工程脚手架 https://start.aliyun.com 。

详情见文章:如何快速构建一个Spring Boot项目

代码仓库

https://gitee.com/chentian114/spring-cloud-practice

公众号

参考

《Spring Cloud 与Docker 微服务架构实战》 周立

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/946416.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号