版本说明:

springcloud:Greenwich.SR3

springboot:2.1.8

1、构建步骤

1.1、microservicecloud整体父工程Project

新建父工程microservicecloud,切记是Packageing是pom模式

此maven project目的:主要是定义POM文件,将后续各个子模块公用的jar包等统一提出来,类似一个抽象父类

pom.xml

  1. <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">
  2. <modelVersion>4.0.0</modelVersion>
  3. <groupId>com.jiatp.springcloud</groupId>
  4. <artifactId>microservicecloud</artifactId>
  5. <version>0.0.1-SNAPSHOT</version>
  6. <packaging>pom</packaging>
  7. <properties>
  8. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  9. <maven.compiler.source>1.8</maven.compiler.source>
  10. <maven.compiler.target>1.8</maven.compiler.target>
  11. <junit.version>4.12</junit.version>
  12. <log4j.version>1.2.17</log4j.version>
  13. <lombok.version>1.18.10</lombok.version>
  14. </properties>
  15. <dependencyManagement>
  16. <dependencies>
  17. <dependency>
  18. <groupId>org.springframework.cloud</groupId>
  19. <artifactId>spring-cloud-dependencies</artifactId>
  20. <version>Greenwich.SR3</version>
  21. <type>pom</type>
  22. <scope>import</scope>
  23. </dependency>
  24. <dependency>
  25. <groupId>org.springframework.boot</groupId>
  26. <artifactId>spring-boot-dependencies</artifactId>
  27. <version>2.1.8.RELEASE</version>
  28. <type>pom</type>
  29. <scope>import</scope>
  30. </dependency>
  31. <dependency>
  32. <groupId>mysql</groupId>
  33. <artifactId>mysql-connector-java</artifactId>
  34. <version>5.0.4</version>
  35. </dependency>
  36. <dependency>
  37. <groupId>com.alibaba</groupId>
  38. <artifactId>druid</artifactId>
  39. <version>1.1.20</version>
  40. </dependency>
  41. <dependency>
  42. <groupId>org.mybatis.spring.boot</groupId>
  43. <artifactId>mybatis-spring-boot-starter</artifactId>
  44. <version>2.1.0</version>
  45. </dependency>
  46. <dependency>
  47. <groupId>ch.qos.logback</groupId>
  48. <artifactId>logback-core</artifactId>
  49. <version>1.2.3</version>
  50. </dependency>
  51. <dependency>
  52. <groupId>junit</groupId>
  53. <artifactId>junit</artifactId>
  54. <version>${junit.version}</version>
  55. <scope>test</scope>
  56. </dependency>
  57. <dependency>
  58. <groupId>log4j</groupId>
  59. <artifactId>log4j</artifactId>
  60. <version>${log4j.version}</version>
  61. </dependency>
  62. </dependencies>
  63. </dependencyManagement>
  64. <build>
  65. <finalName>microservicecloud</finalName>
  66. <resources>
  67. <resource> <!--以$ 开头 在src/main/resources目录下的 都能读取 -->
  68. <directory>src/main/resources</directory>
  69. <filtering>true</filtering>
  70. </resource>
  71. </resources>
  72. <plugins>
  73. <plugin>
  74. <groupId>org.apache.maven.plugins</groupId>
  75. <artifactId>maven-resources-plugin</artifactId>
  76. <configuration>
  77. <delimiters>
  78. <delimit>$</delimit>
  79. </delimiters>
  80. </configuration>
  81. </plugin>
  82. </plugins>
  83. </build>
  84. <modules>
  85. <module>microservicecloud-api</module>
  86. <module>microservicecloud-provider-dept-8001</module>
  87. <module>microservicecloud-consumer-dept-80</module>
  88. </modules>
  89. </project>

1.2、microservicecloud-api公共子模块Module

右击父工程microservicecloud新建maven module,Packageing是jar模式,创建完成后请回到父工程查看pom文件。

pom.xml

  1. <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">
  2. <modelVersion>4.0.0</modelVersion>
  3. <parent>
  4. <!-- 子类里面显示声明才能有明确的继承表现,无意外就是父类的默认版本否则自己定义 -->
  5. <groupId>com.jiatp.springcloud</groupId>
  6. <artifactId>microservicecloud</artifactId>
  7. <version>0.0.1-SNAPSHOT</version>
  8. </parent>
  9. <!-- 当前Module我自己叫什么名字 -->
  10. <artifactId>microservicecloud-api</artifactId>
  11. <dependencies><!-- 当前Module需要用到的jar包,按自己需求添加,如果父类已经包含了,可以不用写版本号 -->
  12. <dependency>
  13. <groupId>org.projectlombok</groupId>
  14. <artifactId>lombok</artifactId>
  15. </dependency>
  16. </dependencies>
  17. </project>

新建部门Entity且配合lombok使用


  1. package com.atguigu.springcloud.entities;
  2. import java.io.Serializable;
  3. import lombok.Data;
  4. import lombok.NoArgsConstructor;
  5. import lombok.experimental.Accessors;
  6. @SuppressWarnings("serial")
  7. @NoArgsConstructor
  8. @Data
  9. @Accessors(chain=true)
  10. public class Dept implements Serializable //必须序列化
  11. {
  12. private Long deptno; //主键
  13. private String dname; //部门名称
  14. private String db_source;//来自那个数据库,因为微服务架构可以一个服务对应一个数据库,同一个信息被存储到不同数据库
  15. public Dept(String dname)
  16. {
  17. super();
  18. this.dname = dname;
  19. }
  20. }

右键microservicecloud-api选择Run as ,先mvn clean 后maven install后给其它模块引用,达到通用目的。

也即需要用到部门实体的话,不用每个工程都定义一份,直接引用本模块即可。

1.3、microservicecloud-provider-dept-8001微服务提供者Module

1、新建microservicecloud-provider-dept-8001 提供者Module,同理

2、pom.xml

  1. <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">
  2. <modelVersion>4.0.0</modelVersion>
  3. <parent>
  4. <groupId>com.jiatp.springcloud</groupId>
  5. <artifactId>microservicecloud</artifactId>
  6. <version>0.0.1-SNAPSHOT</version>
  7. </parent>
  8. <artifactId>microservicecloud-provider-dept-8001</artifactId>
  9. <dependencies>
  10. <dependency><!-- 引入自己定义的api通用包,可以使用Dept部门Entity -->
  11. <groupId>com.jiatp.springcloud</groupId>
  12. <artifactId>microservicecloud-api</artifactId>
  13. <version>${project.version}</version>
  14. </dependency>
  15. <dependency>
  16. <groupId>junit</groupId>
  17. <artifactId>junit</artifactId>
  18. </dependency>
  19. <dependency>
  20. <groupId>mysql</groupId>
  21. <artifactId>mysql-connector-java</artifactId>
  22. </dependency>
  23. <dependency>
  24. <groupId>com.alibaba</groupId>
  25. <artifactId>druid</artifactId>
  26. </dependency>
  27. <dependency>
  28. <groupId>ch.qos.logback</groupId>
  29. <artifactId>logback-core</artifactId>
  30. </dependency>
  31. <dependency>
  32. <groupId>org.mybatis.spring.boot</groupId>
  33. <artifactId>mybatis-spring-boot-starter</artifactId>
  34. </dependency>
  35. <dependency>
  36. <groupId>org.springframework.boot</groupId>
  37. <artifactId>spring-boot-starter-jetty</artifactId>
  38. </dependency>
  39. <dependency>
  40. <groupId>org.springframework.boot</groupId>
  41. <artifactId>spring-boot-starter-web</artifactId>
  42. </dependency>
  43. <dependency>
  44. <groupId>org.springframework.boot</groupId>
  45. <artifactId>spring-boot-starter-test</artifactId>
  46. </dependency>
  47. <!-- 修改后立即生效,热部署 -->
  48. <dependency>
  49. <groupId>org.springframework</groupId>
  50. <artifactId>springloaded</artifactId>
  51. <version>1.2.6.RELEASE</version>
  52. </dependency>
  53. <dependency>
  54. <groupId>org.springframework.boot</groupId>
  55. <artifactId>spring-boot-devtools</artifactId>
  56. </dependency>
  57. </dependencies>
  58. </project>

3、application.yml

  1. server:
  2. port: 8001
  3. mybatis:
  4. config-location: classpath:mybatis/mybatis.cfg.xml # mybatis配置文件所在路径
  5. type-aliases-package: com.jiatp.springcloud.entity # 扫描此包下的entity ->所有entity别名类所在包
  6. mapper-locations:
  7. - classpath:mybatis/mapper/**/*.xml # mapper映射文件
  8. spring:
  9. application:
  10. name: microservicecloud-dept # 很重要,对外暴露的微服务名字
  11. datasource:
  12. type: com.alibaba.druid.pool.DruidDataSource # 数据源类型
  13. driver-class-name: org.gjt.mm.mysql.Driver # 数据库驱动包
  14. url: jdbc:mysql://localhost:3306/cloudDB01?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone = GMT
  15. username: root
  16. password: 123456
  17. dbcp2:
  18. min-idle: 5 # 数据库连接池的最小维持连接数
  19. initial-size: 5 # 初始化连接数
  20. max-idle: 5 # 最大连接数

4、工程src/main/resources目录下新建mybatis文件夹后新建mybatis.cfg.xml文件

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE configuration
  3. PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-config.dtd">
  5. <configuration>
  6. <settings>
  7. <setting name="cacheEnabled" value="true"/><!-- 二级缓存开启 -->
  8. </settings>
  9. </configuration>

4、创建cloudDB01 数据库,新建dept表并且插入数据

5、编写DeptMapper接口

  1. package com.jiatp.springcloud.dao;
  2. import java.util.List;
  3. import org.apache.ibatis.annotations.Mapper;
  4. import com.jiatp.springcloud.entity.Dept;
  5. @Mapper
  6. public interface DeptDao {
  7. public boolean addDept(Dept dept);
  8. public Dept findById(Long id);
  9. public List<Dept> findAll();
  10. }

6、工程src/main/resources/mybatis目录下新建mapper文件夹后再建DeptMapper.xml

注意:这里如果采用注解方式,可以直接在DeptMapper接口上直接写sql语句

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper
  3. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  5. <mapper namespace="com.jiatp.springcloud.dao.DeptDao">
  6. <select id="findById" resultType="Dept" parameterType="Long">
  7. select deptno,dname,db_source from dept where deptno=#{deptno};
  8. </select>
  9. <select id="findAll" resultType="Dept">
  10. select deptno,dname,db_source from dept;
  11. </select>
  12. <insert id="addDept" parameterType="Dept">
  13. INSERT INTO dept(dname,db_source) VALUES(#{dname},DATABASE());
  14. </insert>
  15. </mapper>

7、DeptService和DeptServiceImpl部门服务接口和实现类

  1. package com.jiatp.springcloud.service;
  2. import java.util.List;
  3. import com.jiatp.springcloud.entity.Dept;
  4. public interface DeptService {
  5. public boolean add(Dept dept);
  6. public Dept get(Long id);
  7. public List<Dept> list();
  8. }
  9. //---------------------------------------------
  10. package com.jiatp.springcloud.service.impl;
  11. import java.util.List;
  12. import org.springframework.beans.factory.annotation.Autowired;
  13. import org.springframework.stereotype.Service;
  14. import com.jiatp.springcloud.dao.DeptDao;
  15. import com.jiatp.springcloud.entity.Dept;
  16. import com.jiatp.springcloud.service.DeptService;
  17. @Service
  18. public class DeptServiceImpl implements DeptService{
  19. @Autowired
  20. private DeptDao deptdao;
  21. @Override
  22. public boolean add(Dept dept) {
  23. // TODO Auto-generated method stub
  24. return deptdao.addDept(dept);
  25. }
  26. @Override
  27. public Dept get(Long id) {
  28. // TODO Auto-generated method stub
  29. return deptdao.findById(id);
  30. }
  31. @Override
  32. public List<Dept> list() {
  33. // TODO Auto-generated method stub
  34. return deptdao.findAll();
  35. }
  36. }

8、编写controller

  1. @RestController
  2. public class DeptController
  3. {
  4. @Autowired
  5. private DeptService service;
  6. @RequestMapping(value="/dept/add",method=RequestMethod.POST)
  7. public boolean add(@RequestBody Dept dept)
  8. {
  9. return service.add(dept);
  10. }
  11. @RequestMapping(value="/dept/get/{id}",method=RequestMethod.GET)
  12. public Dept get(@PathVariable("id") Long id)
  13. {
  14. return service.get(id);
  15. }
  16. @RequestMapping(value="/dept/list",method=RequestMethod.GET)
  17. public List<Dept> list()
  18. {
  19. return service.list();
  20. }
  21. }

9、编写DeptProvider8001_App主启动类


  1. @SpringBootApplication
  2. public class DeptProvider8001_App
  3. {
  4. public static void main(String[] args)
  5. {
  6. SpringApplication.run(DeptProvider8001_App.class, args);
  7. }
  8. }

测试:http://localhost:8001/dept/get/2

1.4、microservicecloud-consumer-dept-80部门微服务消费者Module

1、新建microservicecloud-consumer-dept-80,同理

2、pom.xml

  1. <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">
  2. <modelVersion>4.0.0</modelVersion>
  3. <parent>
  4. <groupId>com.jiatp.springcloud</groupId>
  5. <artifactId>microservicecloud</artifactId>
  6. <version>0.0.1-SNAPSHOT</version>
  7. </parent>
  8. <artifactId>microservicecloud-consumer-dept-80</artifactId>
  9. <description>部门微服务消费者</description>
  10. <dependencies>
  11. <dependency><!-- 自己定义的api -->
  12. <groupId>com.jiatp.springcloud</groupId>
  13. <artifactId>microservicecloud-api</artifactId>
  14. <version>${project.version}</version>
  15. </dependency>
  16. <dependency>
  17. <groupId>org.springframework.boot</groupId>
  18. <artifactId>spring-boot-starter-web</artifactId>
  19. </dependency>
  20. <!-- 修改后立即生效,热部署 -->
  21. <dependency>
  22. <groupId>org.springframework</groupId>
  23. <artifactId>springloaded</artifactId>
  24. <version>1.2.6.RELEASE</version>
  25. </dependency>
  26. <dependency>
  27. <groupId>org.springframework.boot</groupId>
  28. <artifactId>spring-boot-devtools</artifactId>
  29. </dependency>
  30. </dependencies>
  31. </project>

3、yml配置

  1. server:
  2. port: 80

4、com.jiatp.springcloud包下ConfigBean的编写

类似spring里面的applicationContext.xml写入的注入Bean

  1. @Configuration
  2. public class ConfigBean { //优化spring,从spring(applicationContext.xml)== @Configuration配置
  3. @Bean
  4. @LoadBalanced //开启负载均衡
  5. public RestTemplate restTemplate(){
  6. return new RestTemplate();
  7. }

RestTemplate提供了多种便捷访问远程Http服务的方法, 是一种简单便捷的访问restful服务模板类,是Spring提供的用于访问Rest服务的客户端模板工具集。 用法:使用restTemplate访问restful接口非常的简单粗暴无脑。

(url, requestMap, ResponseBean.class)这三个参数分别代表

REST请求地址、请求参数、HTTP响应转换被转换成的对象类型。

5、controller编写

  1. @RestController
  2. public class DeptController_Consumer
  3. {
  4. private static final String REST_URL_PREFIX = "http://localhost:8001";
  5. @Autowired
  6. private RestTemplate restTemplate;
  7. @RequestMapping(value="/consumer/dept/add")
  8. public boolean add(Dept dept)
  9. {
  10. return restTemplate.postForObject(REST_URL_PREFIX+"/dept/add", dept, Boolean.class);
  11. }
  12. @RequestMapping(value="/consumer/dept/get/{id}")
  13. public Dept get(@PathVariable("id") Long id)
  14. {
  15. return restTemplate.getForObject(REST_URL_PREFIX+"/dept/get/"+id, Dept.class);
  16. }
  17. @SuppressWarnings("unchecked")
  18. @RequestMapping(value="/consumer/dept/list")
  19. public List<Dept> list()
  20. {
  21. return restTemplate.getForObject(REST_URL_PREFIX+"/dept/list", List.class);
  22. }
  23. }

6、DeptConsumer80_App主启动类

  1. @SpringBootApplication
  2. public class DeptConsumer80_App
  3. {
  4. public static void main(String[] args)
  5. {
  6. SpringApplication.run(DeptConsumer80_App.class, args);
  7. }
  8. }

测试:http://localhost/consumer/dept/list

二、springcloud微服务测试环境搭建的更多相关文章

  1. 快速搭建 SpringCloud 微服务开发环境的脚手架

    本文适合有 SpringBoot 和 SpringCloud 基础知识的人群,跟着本文可使用和快速搭建 SpringCloud 项目. 本文作者:HelloGitHub-秦人 HelloGitHub ...

  2. SpringCloud微服务之跨服务调用后端接口

    SpringCloud微服务系列博客: SpringCloud微服务之快速搭建EurekaServer:https://blog.csdn.net/egg1996911/article/details ...

  3. 【微服务】之二:从零开始,轻松搞定SpringCloud微服务系列--注册中心(一)

    微服务体系,有效解决项目庞大.互相依赖的问题.目前SpringCloud体系有强大的一整套针对微服务的解决方案.本文中,重点对微服务体系中的服务发现注册中心进行详细说明.本篇中的注册中心,采用Netf ...

  4. springcloud微服务架构搭建

    SpringCloud微服务框架搭建 一.微服务架构 1.1什么是分布式 不同模块部署在不同服务器上 作用:分布式解决网站高并发带来问题 1.2什么是集群 多台服务器部署相同应用构成一个集群 作用:通 ...

  5. 十一、Docker搭建部署SpringCloud微服务项目Demo

    环境介绍 技术选型:SpringCloud&SpringCloud Alibaba&Docker 微服务模块划分: 员工模块:ems-employees 部门模块:ems-depart ...

  6. SpringCloud微服务框架搭建

    一.微服务架构 1.1什么是分布式 不同模块部署在不同服务器上 作用:分布式解决网站高并发带来问题 1.2什么是集群 多台服务器部署相同应用构成一个集群 作用:通过负载均衡设备共同对外提供服务 1.3 ...

  7. 总结Selenium自动化测试方法(二)测试环境搭建

    (接上期内容) 二.测试环境搭建 1.安装python 现在python3.0比python2.0多了一些改进的功能(详见http://zhidao.baidu.com/link?url=3sT1g7 ...

  8. springcloud微服务实战:Eureka+Zuul+Feign/Ribbon+Hystrix Turbine+SpringConfig+sleuth+zipkin

    相信现在已经有很多小伙伴已经或者准备使用springcloud微服务了,接下来为大家搭建一个微服务框架,后期可以自己进行扩展.会提供一个小案例: 服务提供者和服务消费者 ,消费者会调用提供者的服务,新 ...

  9. SpringCloud微服务基础学习

    看了蚂蚁课堂的微服务学习,确实学习了不少关于微服务的知识,现在总结学习如下 : SpringCloud微服务基础单点系统架构传统项目架构传统项目分为三层架构,将业务逻辑层.数据库访问层.控制层放入在一 ...

随机推荐

  1. 人工智能-动物识别专家系统算法Python + Pyqt 实现

    一.基础知识库 有毛发 哺乳动物 - 有奶 哺乳动物 - 有羽毛 鸟 - 会飞 会下蛋 鸟 - 吃肉 食肉动物 - 有犬齿 有爪 眼盯前方 食肉动物 - 哺乳动物 有蹄 有蹄类动物 - 哺乳动物 反刍 ...

  2. 2.1 Nginx服务器安装

    2.1 Nginx目录和文件介绍 windows下解压nginx后的文件介绍: conf:存放Nginx服务器的配置文件,包含Nginx服务器的基本配置文件和对部分特性的配置文件,正确配置此文件可以保 ...

  3. 大型项目必备IPC之Binder机制原理(一)

    阿里P7Android高级架构进阶视频免费学习请点击:https://space.bilibili.com/474380680 摘要 Binder是Android系统进程间通信(IPC)方式之一.Li ...

  4. 实用的Python(2)利用Python制作gif动图

    一.简介 moviepy是一个专门用于视频剪辑制作的模块,可以自动化完成很多繁琐的视频剪辑处理工作,除了处理视频数据之外,moviepy中还内置了可以制作gif动图的功能,通过使用moviepy.ed ...

  5. ubuntu安装goland

    安装goland 首先下载goland https://www.jetbrains.com/zh/go/specials/go/go.html?utm_source=baidu&utm_med ...

  6. SQL查询条件生成小工具

    最近运维数据,经常遇到需要在sql条件中个In('',''....)个字符串的情况,于是在网上找了个小工具改造一下,先用着: 效果如图: using System; using System.Coll ...

  7. Stm32CubeMX5 配置使用ADC

    试验,通过ADC按键 按下时的不同电压,然后把相应的数字量通过串口发出, 1. 使用 ADC 检测按键, 原理图分析 2. Stm32CubeMX5配置 ADC功能,先配置PA0为ADC模式 配置 A ...

  8. codeforces 1B 模拟

    题目大意: 给出两种行列位置的表示方法,一个是Excel表示法,一个是(R,C)坐标表示.给出一种表示,输出另外一种表示. 基本思路: 模拟,首先判断是哪一种表示法,然后转换成另外一种表示方法: 我做 ...

  9. Python3-unittest测试框架之Mock接口联调

    unittest测试框架之Mock接口联调 unittest.mock 是一个用于测试的Python库.它允许使用mock对象替换受测试系统的部分,并对它们如何已经被使用进行断言. Mock使用前提 ...

  10. leetcode-162周赛-1254-统计封闭岛屿数量

    题目描述: 自己的提交: class Solution: def closedIsland(self, grid: List[List[int]]) -> int: def dfs(grid,r ...