Rest环境搭建:服务提供者和消费者

  • 1.目录结构
  • 2. 数据库
  • 3.父工程pom.xml
  • 4.springcloud-api
    • 4.1 pom.xml
    • 4.2 实体类Dept.java
  • 5.springcloud-provider(服务提供方)
    • 5.1 pom.xml
    • 5.2 DeptMapper接口
    • 5.3 DeptMapper.xml
    • 5.4 DeptService接口
    • 5.5 DeptServiceImpl
    • 5.6 DeptController
    • 5.7 application.yml
    • 5.8 启动类 DeptProvider
  • 6.springcloud-consumer(服务消费方)
    • 6.1 pom.xml
    • 6.2 ConfigBean
    • 6.3 DeptConsumerController
    • 6.4 application.yml
    • 6.5 启动类DeptConsumer

1.目录结构

2. 数据库

3.父工程pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.test</groupId><artifactId>SpringCloud_01</artifactId><version>1.0-SNAPSHOT</version><modules><module>springcloud-api</module><module>springcloud-provider</module><module>springcloud-consumer</module></modules><!--打包方式--><packaging>pom</packaging><!--定义版本号,以便修改--><properties><project-build.sourceEncoding>UTF-8</project-build.sourceEncoding><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target><junit.version>4.12</junit.version><lombok.version>1.16.10</lombok.version><log4j.version>1.2.17</log4j.version><springboot.verson>1.3.2</springboot.verson></properties><dependencyManagement><dependencies><!--spirngcloud的依赖 --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>Greenwich.SR6</version><type>pom</type><scope>import</scope><!--pom+import的方式导入--></dependency><!--springboot的依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>2.4.1</version><type>pom</type><scope>import</scope></dependency><!--数据库--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.47</version></dependency><!--数据源--><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.2.10</version></dependency><!--springboot启动器--><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>${springboot.verson}</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>${junit.version}</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>${lombok.version}</version></dependency><!--日志--><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>${log4j.version}</version></dependency></dependencies></dependencyManagement>
</project>

4.springcloud-api

4.1 pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>SpringCloud_01</artifactId><groupId>com.test</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>springcloud-api</artifactId><!--当前的Module自己需要的依赖,如果父依赖中已经配置了 版本,这里就不用写了--><dependencies><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency></dependencies>
</project>

4.2 实体类Dept.java

//分布式中对所有的实体类都要序列化
//1.网络通信 2.序列化@Data //自动生成get,set方法
@NoArgsConstructor//自动生成无参构造器
//@AllArgsConstructor//自动生成全残构造函数
@Accessors(chain = true)//支持链式写法
/*
链式写法:Dept dept=new Dept();dept.setDeptNo(101).setDname('市场部').setDb_source('db02')*/
public class Dept implements Serializable {//实体类:类表关系映射private Long deptno;private String dname;//分布式中,可以一个服务对应一个数据库,同一个信息可能存在于不同的数据库,用db_source作为区分private String db_source;//看这个数据库属于哪个数据库的字段public Dept(String dname){this.dname=dname;}
}

5.springcloud-provider(服务提供方)

5.1 pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><artifactId>springcloud-provider</artifactId><parent><artifactId>SpringCloud_01</artifactId><groupId>com.test</groupId><version>1.0-SNAPSHOT</version></parent><dependencies><!--需要拿到实体类,配置api module--><dependency><groupId>com.test</groupId><artifactId>springcloud-api</artifactId><version>1.0-SNAPSHOT</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-test</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--热部署工具,修改代码后,不需要重启,刷新即可--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId></dependency></dependencies>
</project>

5.2 DeptMapper接口

@Mapper
@Repository
public interface DeptMapper {public boolean addDept(Dept dept);public Dept queryById(Long id);public List<Dept> queryAll();
}

5.3 DeptMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.test.springcloud.mapper.DeptMapper" ><insert id="addDept" parameterType="Dept">insert into dept(dname,db_source) values(#(dname),DATABASE());</insert><select id="queryById" resultType="Dept" parameterType="Long">select * from dept where deptno=#(deptno);</select><select id="queryAll" resultType="Dept">select * from dept;</select>
</mapper>

5.4 DeptService接口

public interface DeptService {public boolean addDept(Dept dept);public Dept queryById(Long id);public List<Dept> queryAll();
}

5.5 DeptServiceImpl

@Service
public class DeptServiceImpl implements DeptService {@Autowiredprivate DeptMapper deptMapper;@Overridepublic boolean addDept(Dept dept) {return deptMapper.addDept(dept);}@Overridepublic Dept queryById(Long id) {return deptMapper.queryById(id);}@Overridepublic List<Dept> queryAll() {return deptMapper.queryAll();}
}

5.6 DeptController

//提供RestFul服务
@RestController
public class DeptController {@Autowiredprivate DeptService deptService;@PostMapping("/dept/add")public boolean addDept(@RequestBody Dept dept){return deptService.addDept(dept);}@GetMapping("/dept/get/{id}")public Dept get(@PathVariable("id") Long id){return deptService.queryById(id);}@GetMapping("/dept/list")public List<Dept> queryAll(){return deptService.queryAll();}
}

5.7 application.yml

server:port: 8001mybatis:type-aliases-package: com.test.springcloud.entitymapper-locations: classpath:mybatis/mapper/*.xml  #mapper文件
spring:application:name: springcloud-provider-deptdatasource: #数据源type: com.alibaba.druid.pool.DruidDataSourcedriver-class-name: org.gjt.mm.mysql.Driverurl: jdbc:mysql://localhost:3306/db01?useUnicode=true&characterEncoding=utf-8username: rootpassword: root

5.8 启动类 DeptProvider

//启动类
@SpringBootApplication
public class DeptProvider {public static void main(String[] args) {SpringApplication.run(DeptProvider.class,args);}
}

测试

6.springcloud-consumer(服务消费方)

6.1 pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>SpringCloud_01</artifactId><groupId>com.test</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>springcloud-consumer</artifactId><!--实体类+web--><dependencies><dependency><groupId>com.test</groupId><artifactId>springcloud-api</artifactId><version>1.0-SNAPSHOT</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--热部署--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId></dependency></dependencies>
</project>

6.2 ConfigBean

@Configuration//相当于Spring applicationContext.xml中配置bean
public class ConfigBean {//注册bean@Beanpublic RestTemplate getRestTemplate(){return new RestTemplate();}
}

6.3 DeptConsumerController

@RestController
public class DeptConsumerController {//消费者没有service层//RestTemplate模板中有很多方法,供调用//三个参数(url,实体Map,Class<T> responseType)@Autowiredprivate RestTemplate restTemplate;//提供多种便捷访问远程http服务的方法,是一种简单的RestFul服务模板private static final String REST_URL_PREFIX="http://localhost:8001";//固定前缀@RequestMapping("/consumer/dept/get/{id}")public Dept get(@PathVariable("id") Long id){return restTemplate.getForObject(REST_URL_PREFIX+"/dept/get/"+id,Dept.class);//返回值类型Dept,可以拼接到url,也可以单独作为参数}@RequestMapping("/consumer/dept/add")public boolean add(Dept dept){return restTemplate.postForObject(REST_URL_PREFIX+"/dept/add",dept,Boolean.class);//返回值类型Boolean}@RequestMapping("/consumer/dept/list")public List<Dept> list(){return restTemplate.getForObject(REST_URL_PREFIX+"/dept/list",List.class);//返回值类型Boolean}
}

6.4 application.yml

server:port: 80

6.5 启动类DeptConsumer

@SpringBootApplication
public class DeptConsumer {public static void main(String[] args) {SpringApplication.run(DeptConsumer.class,args);}
}

测试

Rest环境搭建:服务提供者和消费者相关推荐

  1. springCloud 学习第一篇(介绍以及Rest 学习:服务者 与消费者 环境搭建)

    什么是SpringCloud? springCloud ,基于springBoot 提供了一套微服务解决方案,包括服务注册与发现,配置中心全链路监控,服务网关,负载均衡,熔断器等组件,除了基于netF ...

  2. 4.2.10 Kafka源码剖析, 阅读环境搭建, broker启动流程, topic创建流程, Producer生产者流程, Consumer消费者流程,

    目录 4.1 Kafka源码剖析之源码阅读环境搭建 4.1.1 安装配置Gradle 4.1.2 Scala的安装和配置 4.1.3 Idea配置 4.1.4 源码操作 4.2 Kafka源码剖析之B ...

  3. dubbo 即是服务提供者又是消费者_Dubbo详细介绍与安装使用过程

    1 Dubbo介绍 1.1 dubbox简介 随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进. ...

  4. Dubbo 专题(基础篇):Dubbo 介绍、环境搭建与实践

    前几天复习了 Dubbo 相关的技术点,趁热打铁记录一下,本篇博客属于 Dubbo 的入门基础篇,内容主要包括 Dubbo 概念,Dubbo 特点,Dubbo 基本工作原理,Dubbo 环境搭建,Du ...

  5. 跟着狂神学SpringCloud(Rest环境搭建+Eureka服务注册与发现+ribbon+Feign负载均衡+Hystrix+服务熔断+Zuul路由网关+SpringCloud config分布)

    跟着狂神学SpringCloud SpringCloud 回顾之前的知识- JavaSE 数据库 前端 Servlet Http Mybatis Spring SpringMVC SpringBoot ...

  6. dubbo-源码环境搭建

    克隆代码 git clone git@github.com:apache/dubbo.git 执行maven相关命令: mvn clean install -Dmaven.test.skip=true ...

  7. Zookeeper+Dubbox 环境搭建日记

    第一章:Dubbox简介 Dubbox是一个开源的RPC(Remote ProcedureCall Protocol)远程调用框架,是由dangdang对阿里的Dubbo的升级,可以被视为Dubbo的 ...

  8. dubbo框架及dubbo环境搭建

    第一:介绍Dubbo背景 大规模服务化之前,应用可能只是通过RMI或Hessian等工具,简单的暴露和引用远程服务,通过配置服务的URL地址进行调用,通过F5等硬件进行负载均衡. (1)当服务越来越多 ...

  9. SpringCloud-netflix- 服务提供者环境搭建(一) 狂神

    4. SpringCloud Rest学习环境搭建:服务提供者 4.1 介绍 我们会使用一个Dept部门模块做一个微服务通用案例Consumer消费者(Client)通过REST调用Provider提 ...

最新文章

  1. 基于 CoreText 实现的高性能 UITableView
  2. threadlocal用法_ThreadLocal源码分析
  3. golang post get 请求 简介
  4. 计算机网络现在成功,百收计算机网络努力的人是怎么成功的
  5. 2019 Multi-University Training Contest 1 - 1011 - Function - 数论
  6. python公共变量_Python中的公共变量
  7. SQL-10 获取所有非manager的员工emp_no
  8. sudoku me_Java Sudoku解算器程序
  9. ERROR: The environment variable VG_GNU_PACKAGE must be set. Aborting.
  10. Ubuntu下搭建git服务器步骤
  11. python 分类算法的数据要归一化嘛_Python数据预处理:彻底理解标准化和归一化...
  12. 《钱塘湖春行》-----白居易
  13. html5 梵高 星,上海梵高星空艺术馆门票
  14. 精美的手机WEB网页欣赏
  15. 微信小程序开屏广告实现
  16. 杂谈eMule协议的由来
  17. 【学习笔记】C++ GUI Qt4 第六章 6.4 滚动区域 和 6.5 停靠窗口和工具栏
  18. 查资料的一些工具网站
  19. 深入了解 Flex 属性
  20. EM4001射频模块读卡

热门文章

  1. 安装pod网络插件flannel
  2. 减肥计划switch版
  3. 互联网人均喷子?键盘侠是怎样炼成的
  4. 按规律摆放红蓝花盆(python)实现
  5. 卫生局表示北京发生禽流感人传人概率为零
  6. java 多个歌曲_java 多个文件合并,多个 MP3 合并,InputStream 合并
  7. 2022年陕西二级建造师施工文件归档管理精选题及答案
  8. 2021年中国抗心律失常药物行业现状分析:国内研发更进一步[图]
  9. java模拟QQ的伸缩面板
  10. element中Dialog和MessageBox弹框按钮和关闭图标样式修改