微服务架构工程搭建

- 日理万妓 2022-12-29 04:40 281阅读 0赞

微服务架构工程搭建

  • 1-IDEA 新建 Project 工作空间
  • 2-Rest 微服务工程搭建
    • 2.1-提供者服务 cloud-provider-payment8001
    • 2.2-热部署 Devtools
    • 2.3-消费者服务 cloud-consumer-order80
    • 2.4-微服务工程重构

1-IDEA 新建 Project 工作空间

约定 > 配置 > 编码

a、新建父工程 mscloud
在这里插入图片描述

  1. <groupId>com.atguigu.springcloud</groupId>
  2. <artifactId>mscloud</artifactId>
  3. <version>1.0-SNAPSHOT</version>

在这里插入图片描述


待删除的截图
在这里插入图片描述

  1. <groupId>com.atguigu.springcloud</groupId>
  2. <artifactId>mscloud</artifactId>
  3. <version>1.0-SNAPSHOT</version>

在这里插入图片描述
在这里插入图片描述
b、删除父工程 mscloud 中无用的 src 文件夹
在这里插入图片描述
c、修改 IDEA 字符编码,file -> Settings
在这里插入图片描述
d、修改 IDEA File Type 过滤,file -> Settings

  1. *.hprof;*.idea;*.iml;*.pyc;*.pyo;*.rbc;*.yarb;*~;.DS_Store;.git;.hg;.svn;CVS;__pycache__;_svn;vssver.scc;vssver2.scc

在这里插入图片描述
e、修改 IDEA 注解生效激活,file -> Settings
在这里插入图片描述
f、修改 IDEA Java 编译版本,file -> Settings
在这里插入图片描述
g、修改父工程 mscloud 中 pom.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  5. <modelVersion>4.0.0</modelVersion>
  6. <groupId>com.atguigu.springcloud</groupId>
  7. <artifactId>cloud2020</artifactId>
  8. <version>1.0-SNAPSHOT</version>
  9. <packaging>pom</packaging>
  10. <!-- 统一管理 jar 包版本 -->
  11. <properties>
  12. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  13. <maven.compiler.source>1.8</maven.compiler.source>
  14. <maven.compiler.target>1.8</maven.compiler.target>
  15. <junit.version>4.12</junit.version>
  16. <log4j.version>1.2.17</log4j.version>
  17. <lombok.version>1.18.14</lombok.version>
  18. <mysql.version>5.1.47</mysql.version>
  19. <druid.version>1.1.16</druid.version>
  20. <mybatis.spring.boot.version>1.3.0</mybatis.spring.boot.version>
  21. </properties>
  22. <!-- 子模块继承之后作用:锁定版本 + 子模块不用写 groupId 和 version -->
  23. <dependencyManagement>
  24. <dependencies>
  25. <!-- SpringBoot 2.2.2 -->
  26. <dependency>
  27. <groupId>org.springframework.boot</groupId>
  28. <artifactId>spring-boot-dependencies</artifactId>
  29. <version>2.2.2.RELEASE</version>
  30. <type>pom</type>
  31. <scope>import</scope>
  32. </dependency>
  33. <!-- SpringCloud Hoxton.SR1 -->
  34. <dependency>
  35. <groupId>org.springframework.cloud</groupId>
  36. <artifactId>spring-cloud-dependencies</artifactId>
  37. <version>Hoxton.SR1</version>
  38. <type>pom</type>
  39. <scope>import</scope>
  40. </dependency>
  41. <!-- SpringCloud Alibaba 2.1.0.RELEASE -->
  42. <dependency>
  43. <groupId>com.alibaba.cloud</groupId>
  44. <artifactId>spring-cloud-alibaba-dependencies</artifactId>
  45. <version>2.1.0.RELEASE</version>
  46. <type>pom</type>
  47. <scope>import</scope>
  48. </dependency>
  49. <dependency>
  50. <groupId>mysql</groupId>
  51. <artifactId>mysql-connector-java</artifactId>
  52. <version>${mysql.version}</version>
  53. </dependency>
  54. <dependency>
  55. <groupId>com.alibaba</groupId>
  56. <artifactId>druid</artifactId>
  57. <version>${druid.version}</version>
  58. </dependency>
  59. <dependency>
  60. <groupId>org.mybatis.spring.boot</groupId>
  61. <artifactId>mybatis-spring-boot-starter</artifactId>
  62. <version>${mybatis.spring.boot.version}</version>
  63. </dependency>
  64. <dependency>
  65. <groupId>junit</groupId>
  66. <artifactId>junit</artifactId>
  67. <version>${junit.version}</version>
  68. </dependency>
  69. <dependency>
  70. <groupId>log4j</groupId>
  71. <artifactId>log4j</artifactId>
  72. <version>${log4j.version}</version>
  73. </dependency>
  74. <dependency>
  75. <groupId>org.projectlombok</groupId>
  76. <artifactId>lombok</artifactId>
  77. <version>${lombok.version}</version>
  78. <optional>true</optional>
  79. </dependency>
  80. </dependencies>
  81. </dependencyManagement>
  82. <build>
  83. <plugins>
  84. <plugin>
  85. <groupId>org.springframework.boot</groupId>
  86. <artifactId>spring-boot-maven-plugin</artifactId>
  87. <configuration>
  88. <fork>true</fork>
  89. <addResources>true</addResources>
  90. </configuration>
  91. </plugin>
  92. </plugins>
  93. </build>
  94. </project>

h、父工程 mscloud,执行 Maven 命令 mvn clean install
在这里插入图片描述


2-Rest 微服务工程搭建

小总结

  • 建 module
  • 改 pom
  • 写 yml
  • 主启动类
  • 业务类

2.1-提供者服务 cloud-provider-payment8001

a、右击父工程 mscloud,新建子模块 cloud-provider-payment8001
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
b、查看父工程 mscloud 中 pom.xml 变化
在这里插入图片描述
c、修改子模块 cloud-provider-payment8001 中 pom.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5. <modelVersion>4.0.0</modelVersion>
  6. <parent>
  7. <artifactId>cloud2020</artifactId>
  8. <groupId>com.atguigu.springcloud</groupId>
  9. <version>1.0-SNAPSHOT</version>
  10. </parent>
  11. <artifactId>cloud-provider-payment8001</artifactId>
  12. <dependencies>
  13. <dependency>
  14. <groupId>org.springframework.boot</groupId>
  15. <artifactId>spring-boot-starter-web</artifactId>
  16. </dependency>
  17. <dependency>
  18. <groupId>org.springframework.boot</groupId>
  19. <artifactId>spring-boot-starter-actuator</artifactId>
  20. </dependency>
  21. <dependency>
  22. <groupId>org.mybatis.spring.boot</groupId>
  23. <artifactId>mybatis-spring-boot-starter</artifactId>
  24. </dependency>
  25. <dependency>
  26. <groupId>com.alibaba</groupId>
  27. <artifactId>druid-spring-boot-starter</artifactId>
  28. <version>1.1.10</version>
  29. </dependency>
  30. <dependency>
  31. <groupId>mysql</groupId>
  32. <artifactId>mysql-connector-java</artifactId>
  33. </dependency>
  34. <dependency>
  35. <groupId>org.springframework.boot</groupId>
  36. <artifactId>spring-boot-starter-jdbc</artifactId>
  37. </dependency>
  38. <dependency>
  39. <groupId>org.springframework.boot</groupId>
  40. <artifactId>spring-boot-devtools</artifactId>
  41. <scope>runtime</scope>
  42. <optional>true</optional>
  43. </dependency>
  44. <dependency>
  45. <groupId>org.projectlombok</groupId>
  46. <artifactId>lombok</artifactId>
  47. <optional>true</optional>
  48. </dependency>
  49. <dependency>
  50. <groupId>org.springframework.boot</groupId>
  51. <artifactId>spring-boot-starter-test</artifactId>
  52. <scope>test</scope>
  53. </dependency>
  54. </dependencies>
  55. </project>

d、修改子模块 cloud-provider-payment8001,目录 /src/main/resources 中新建 application.yml

  1. server:
  2. port: 8001
  3. spring:
  4. application:
  5. name: cloud-payment-service
  6. datasource:
  7. type: com.alibaba.druid.pool.DruidDataSource
  8. driver-class-name: org.gjt.mm.mysql.Driver
  9. url: jdbc:mysql://localhost:3306/db2019?useUnicode=true&characterEncoding=utf-8&useSSL=false
  10. username: root
  11. password: 123456
  12. mybatis:
  13. mapperLocations: classpath:mapper/*.xml
  14. type-aliases-package: com.atguigu.springcloud.entities

e、修改子模块 cloud-provider-payment8001,目录 /src/main/java 中新建包 com.atguigu.springcloud

f、修改子模块 cloud-provider-payment8001,包 com.atguigu.springcloud 中新建启动类 PaymentMain8001.java

  1. package com.atguigu.springcloud;
  2. import org.springframework.boot.SpringApplication;
  3. import org.springframework.boot.autoconfigure.SpringBootApplication;
  4. @SpringBootApplication
  5. public class PaymentMain8001 {
  6. public static void main(String[] args) {
  7. SpringApplication.run(PaymentMain8001.class, args);
  8. }
  9. }

g、新建 jdbc:mysql://localhost:3306/db2019 数据库

子模块 cloud-provider-payment8001 连接 jdbc:mysql://localhost:3306/db2019 数据库。

  1. DROP DATABASE IF EXISTS db2019;
  2. CREATE DATABASE db2019 CHARACTER SET UTF8;
  3. USE db2019;
  4. CREATE TABLE payment (
  5. id BIGINT (20) NOT NULL,
  6. serial VARCHAR (20) DEFAULT NULL,
  7. PRIMARY KEY (`id`)
  8. ) ENGINE = INNODB DEFAULT CHARSET = utf8;
  9. INSERT INTO payment (id, serial) VALUES ('31', '尚硅谷001');

h、修改子模块 cloud-provider-payment8001,目录 /src/main/java 中新建包 com.atguigu.springcloud.entities

i、修改子模块 cloud-provider-payment8001,包 com.atguigu.springcloud.entities 中新建实体类 Payment.java

  1. package com.atguigu.springcloud.entities;
  2. import lombok.AllArgsConstructor;
  3. import lombok.Data;
  4. import lombok.NoArgsConstructor;
  5. import java.io.Serializable;
  6. @Data
  7. @AllArgsConstructor
  8. @NoArgsConstructor
  9. public class Payment implements Serializable {
  10. private Long id;
  11. private String serial;
  12. }

j、修改子模块 cloud-provider-payment8001,包 com.atguigu.springcloud.entities 中新建封装类 CommonResult.java

  1. package com.atguigu.springcloud.entities;
  2. import lombok.AllArgsConstructor;
  3. import lombok.Data;
  4. import lombok.NoArgsConstructor;
  5. @Data
  6. @AllArgsConstructor
  7. @NoArgsConstructor
  8. public class CommonResult<T> {
  9. private Integer code;
  10. private String message;
  11. private T data;
  12. public CommonResult(Integer code, String message) {
  13. this(code, message, null);
  14. }
  15. }

k、修改子模块 cloud-provider-payment8001,目录 /src/main/java 中新建包 com.atguigu.springcloud.dao

l、修改子模块 cloud-provider-payment8001,包 com.atguigu.springcloud.dao 中新建接口 PaymentDao.java

  1. package com.atguigu.springcloud.dao;
  2. import com.atguigu.springcloud.entities.Payment;
  3. import org.apache.ibatis.annotations.Mapper;
  4. import org.apache.ibatis.annotations.Param;
  5. @Mapper
  6. public interface PaymentDao {
  7. public int create(Payment payment);
  8. public Payment getPaymentById(@Param("id") Long id);
  9. }

m、修改子模块 cloud-provider-payment8001,目录 /src/main/resources 中新建目录 mapper

n、修改子模块 cloud-provider-payment8001,目录 /src/main/resources/mapper 中新建 PaymentMapper.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  3. <mapper namespace="com.atguigu.springcloud.dao.PaymentDao">
  4. <insert id="create" parameterType="Payment" useGeneratedKeys="true" keyProperty="id">
  5. insert into payment(serial) values (${serial});
  6. </insert>
  7. <resultMap id="BaseResultMap" type="com.atguigu.springcloud.entities.Payment">
  8. <id column="id" property="id" jdbcType="BIGINT"></id>
  9. <id column="serial" property="serial" jdbcType="VARCHAR"></id>
  10. </resultMap>
  11. <select id="getPaymentById" parameterType="Long" resultMap="BaseResultMap">
  12. select * from payment where id = #{id}
  13. </select>
  14. </mapper>

o、修改子模块 cloud-provider-payment8001,目录 /src/main/java 中新建包 com.atguigu.springcloud.service

p、修改子模块 cloud-provider-payment8001,包 com.atguigu.springcloud.service 中新建接口 PaymentService.java

  1. package com.atguigu.springcloud.service;
  2. import com.atguigu.springcloud.entities.Payment;
  3. import org.apache.ibatis.annotations.Param;
  4. public interface PaymentService {
  5. public int create(Payment payment);// 写
  6. public Payment getPaymentById(@Param("id") Long id);// 读
  7. }

q、修改子模块 cloud-provider-payment8001,目录 /src/main/java 中新建包 com.atguigu.springcloud.service.impl

r、修改子模块 cloud-provider-payment8001,包 com.atguigu.springcloud.service.impl 中新建接口实现类 PaymentServiceImpl.java

  1. package com.atguigu.springcloud.service.impl;
  2. import com.atguigu.springcloud.dao.PaymentDao;
  3. import com.atguigu.springcloud.entities.Payment;
  4. import com.atguigu.springcloud.service.PaymentService;
  5. import org.springframework.stereotype.Service;
  6. import javax.annotation.Resource;
  7. @Service
  8. public class PaymentServiceImpl implements PaymentService {
  9. @Resource
  10. private PaymentDao paymentDao;
  11. public int create(Payment payment) {
  12. return paymentDao.create(payment);
  13. }
  14. public Payment getPaymentById(Long id) {
  15. return paymentDao.getPaymentById(id);
  16. }
  17. }

s、修改子模块 cloud-provider-payment8001,目录 /src/main/java 中新建包 com.atguigu.springcloud.controller

t、修改子模块 cloud-provider-payment8001,包 com.atguigu.springcloud.controller 中新建 PaymentController.java

  1. package com.atguigu.springcloud.controller;
  2. import com.atguigu.springcloud.entities.CommonResult;
  3. import com.atguigu.springcloud.entities.Payment;
  4. import com.atguigu.springcloud.service.PaymentService;
  5. import lombok.extern.slf4j.Slf4j;
  6. import org.springframework.web.bind.annotation.GetMapping;
  7. import org.springframework.web.bind.annotation.PathVariable;
  8. import org.springframework.web.bind.annotation.PostMapping;
  9. import org.springframework.web.bind.annotation.RestController;
  10. import javax.annotation.Resource;
  11. @RestController
  12. @Slf4j
  13. public class PaymentController {
  14. @Resource
  15. private PaymentService paymentService;
  16. @PostMapping(value = "/payment/create")
  17. public CommonResult create(Payment payment) {
  18. int result = paymentService.create(payment);
  19. log.info("*****插入结果:" + result);
  20. if (result > 0) { //成功
  21. return new CommonResult(200, "插入数据库成功", result);
  22. } else {
  23. return new CommonResult(444, "插入数据库失败", null);
  24. }
  25. }
  26. @GetMapping(value = "/payment/get/{id}")
  27. public CommonResult getPaymentById(@PathVariable("id") Long id) {
  28. Payment payment = paymentService.getPaymentById(id);
  29. log.info("*****查询结果:" + payment);
  30. if (payment != null) { //说明有数据,能查询成功
  31. return new CommonResult(200, "查询成功", payment);
  32. } else {
  33. return new CommonResult(444, "没有对应记录,查询ID:" + id, null);
  34. }
  35. }
  36. }

u、测试子模块 cloud-provider-payment8001

  • 启动子模块 cloud-provider-payment8001
  • http://localhost:8001/payment/get/31
    在这里插入图片描述

2.2-热部署 Devtools

a、修改子模块 cloud-provider-payment8001 中 pom.xml
在这里插入图片描述

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5. <modelVersion>4.0.0</modelVersion>
  6. <parent>
  7. <artifactId>cloud2020</artifactId>
  8. <groupId>com.atguigu.springcloud</groupId>
  9. <version>1.0-SNAPSHOT</version>
  10. </parent>
  11. <artifactId>cloud-provider-payment8001</artifactId>
  12. <dependencies>
  13. <dependency>
  14. <groupId>org.springframework.boot</groupId>
  15. <artifactId>spring-boot-starter-web</artifactId>
  16. </dependency>
  17. <dependency>
  18. <groupId>org.springframework.boot</groupId>
  19. <artifactId>spring-boot-starter-actuator</artifactId>
  20. </dependency>
  21. <dependency>
  22. <groupId>org.mybatis.spring.boot</groupId>
  23. <artifactId>mybatis-spring-boot-starter</artifactId>
  24. </dependency>
  25. <dependency>
  26. <groupId>com.alibaba</groupId>
  27. <artifactId>druid-spring-boot-starter</artifactId>
  28. <version>1.1.10</version>
  29. </dependency>
  30. <dependency>
  31. <groupId>mysql</groupId>
  32. <artifactId>mysql-connector-java</artifactId>
  33. </dependency>
  34. <dependency>
  35. <groupId>org.springframework.boot</groupId>
  36. <artifactId>spring-boot-starter-jdbc</artifactId>
  37. </dependency>
  38. <dependency>
  39. <groupId>org.springframework.boot</groupId>
  40. <artifactId>spring-boot-devtools</artifactId>
  41. <scope>runtime</scope>
  42. <optional>true</optional>
  43. </dependency>
  44. <dependency>
  45. <groupId>org.projectlombok</groupId>
  46. <artifactId>lombok</artifactId>
  47. <optional>true</optional>
  48. </dependency>
  49. <dependency>
  50. <groupId>org.springframework.boot</groupId>
  51. <artifactId>spring-boot-starter-test</artifactId>
  52. <scope>test</scope>
  53. </dependency>
  54. <dependency>
  55. <groupId>org.springframework.boot</groupId>
  56. <artifactId>spring-boot-devtools</artifactId>
  57. <scope>runtime</scope>
  58. <optional>true</optional>
  59. </dependency>
  60. </dependencies>
  61. </project>

b、修改父工程 mscloud 中 pom.xml
在这里插入图片描述

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5. <modelVersion>4.0.0</modelVersion>
  6. <groupId>com.atguigu.springcloud</groupId>
  7. <artifactId>cloud2020</artifactId>
  8. <version>1.0-SNAPSHOT</version>
  9. <modules>
  10. <module>cloud-provider-payment8001</module>
  11. </modules>
  12. <packaging>pom</packaging>
  13. <!-- 统一管理 jar 包版本 -->
  14. <properties>
  15. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  16. <maven.compiler.source>1.8</maven.compiler.source>
  17. <maven.compiler.target>1.8</maven.compiler.target>
  18. <junit.version>4.12</junit.version>
  19. <log4j.version>1.2.17</log4j.version>
  20. <lombok.version>1.18.14</lombok.version>
  21. <mysql.version>5.1.47</mysql.version>
  22. <druid.version>1.1.16</druid.version>
  23. <mybatis.spring.boot.version>1.3.0</mybatis.spring.boot.version>
  24. </properties>
  25. <!-- 子模块继承之后作用:锁定版本 + 子模块不用写 groupId 和 version -->
  26. <dependencyManagement>
  27. <dependencies>
  28. <!-- SpringBoot 2.2.2 -->
  29. <dependency>
  30. <groupId>org.springframework.boot</groupId>
  31. <artifactId>spring-boot-dependencies</artifactId>
  32. <version>2.2.2.RELEASE</version>
  33. <type>pom</type>
  34. <scope>import</scope>
  35. </dependency>
  36. <!-- SpringCloud Hoxton.SR1 -->
  37. <dependency>
  38. <groupId>org.springframework.cloud</groupId>
  39. <artifactId>spring-cloud-dependencies</artifactId>
  40. <version>Hoxton.SR1</version>
  41. <type>pom</type>
  42. <scope>import</scope>
  43. </dependency>
  44. <!-- SpringCloud Alibaba 2.1.0.RELEASE -->
  45. <dependency>
  46. <groupId>com.alibaba.cloud</groupId>
  47. <artifactId>spring-cloud-alibaba-dependencies</artifactId>
  48. <version>2.1.0.RELEASE</version>
  49. <type>pom</type>
  50. <scope>import</scope>
  51. </dependency>
  52. <dependency>
  53. <groupId>mysql</groupId>
  54. <artifactId>mysql-connector-java</artifactId>
  55. <version>${mysql.version}</version>
  56. </dependency>
  57. <dependency>
  58. <groupId>com.alibaba</groupId>
  59. <artifactId>druid</artifactId>
  60. <version>${druid.version}</version>
  61. </dependency>
  62. <dependency>
  63. <groupId>org.mybatis.spring.boot</groupId>
  64. <artifactId>mybatis-spring-boot-starter</artifactId>
  65. <version>${mybatis.spring.boot.version}</version>
  66. </dependency>
  67. <dependency>
  68. <groupId>junit</groupId>
  69. <artifactId>junit</artifactId>
  70. <version>${junit.version}</version>
  71. </dependency>
  72. <dependency>
  73. <groupId>log4j</groupId>
  74. <artifactId>log4j</artifactId>
  75. <version>${log4j.version}</version>
  76. </dependency>
  77. <dependency>
  78. <groupId>org.projectlombok</groupId>
  79. <artifactId>lombok</artifactId>
  80. <version>${lombok.version}</version>
  81. <optional>true</optional>
  82. </dependency>
  83. </dependencies>
  84. </dependencyManagement>
  85. <build>
  86. <plugins>
  87. <plugin>
  88. <groupId>org.springframework.boot</groupId>
  89. <artifactId>spring-boot-maven-plugin</artifactId>
  90. <configuration>
  91. <fork>true</fork>
  92. <addResources>true</addResources>
  93. </configuration>
  94. </plugin>
  95. </plugins>
  96. </build>
  97. </project>

c、IDEA 开启自动构建
在这里插入图片描述
d、IDEA 快捷键 Alt + Shift + Ctrl + /
在这里插入图片描述
在这里插入图片描述
e、IDEA 重启

2.3-消费者服务 cloud-consumer-order80

a、右击父工程 mscloud,新建子模块 cloud-consumer-order80
在这里插入图片描述
b、修改子模块 cloud-consumer-order80 中 pom.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5. <modelVersion>4.0.0</modelVersion>
  6. <parent>
  7. <artifactId>cloud2020</artifactId>
  8. <groupId>com.atguigu.springcloud</groupId>
  9. <version>1.0-SNAPSHOT</version>
  10. </parent>
  11. <artifactId>cloud-consumer-order80</artifactId>
  12. <dependencies>
  13. <dependency>
  14. <groupId>org.springframework.boot</groupId>
  15. <artifactId>spring-boot-starter-web</artifactId>
  16. </dependency>
  17. <dependency>
  18. <groupId>org.springframework.boot</groupId>
  19. <artifactId>spring-boot-starter-actuator</artifactId>
  20. </dependency>
  21. <dependency>
  22. <groupId>org.springframework.boot</groupId>
  23. <artifactId>spring-boot-devtools</artifactId>
  24. <scope>runtime</scope>
  25. <optional>true</optional>
  26. </dependency>
  27. <dependency>
  28. <groupId>org.projectlombok</groupId>
  29. <artifactId>lombok</artifactId>
  30. <optional>true</optional>
  31. </dependency>
  32. <dependency>
  33. <groupId>org.springframework.boot</groupId>
  34. <artifactId>spring-boot-starter-test</artifactId>
  35. <scope>test</scope>
  36. </dependency>
  37. </dependencies>
  38. </project>

c、修改子模块 cloud-consumer-order80,目录 /src/main/resources 中新建 application.yml

  1. server:
  2. port: 80

d、修改子模块 cloud-consumer-order80,目录 /src/main/java 中新建包 com.atguigu.springcloud

e、修改子模块 cloud-consumer-order80,包 com.atguigu.springcloud 中新建启动类 OrderMain80.java

  1. package com.atguigu.springcloud;
  2. import org.springframework.boot.SpringApplication;
  3. import org.springframework.boot.autoconfigure.SpringBootApplication;
  4. @SpringBootApplication
  5. public class OrderMain80 {
  6. public static void main(String[] args) {
  7. SpringApplication.run(OrderMain80.class, args);
  8. }
  9. }

f、修改子模块 cloud-consumer-order80,目录 /src/main/java 中新建包 com.atguigu.springcloud.entities

g、复制子模块 cloud-provider-payment8001 中包 com.atguigu.springcloud.entities 内容到子模块 cloud-consumer-order80 包 com.atguigu.springcloud.entities

h、修改子模块 cloud-consumer-order80,目录 /src/main/java 中新建包 com.atguigu.springcloud.config

i、修改子模块 cloud-consumer-order80,包 com.atguigu.springcloud.config 中新建 ApplicationContextConfig.java

  1. package com.atguigu.springcloud.config;
  2. import org.springframework.context.annotation.Bean;
  3. import org.springframework.context.annotation.Configuration;
  4. import org.springframework.web.client.RestTemplate;
  5. @Configuration
  6. public class ApplicationContextConfig {
  7. @Bean
  8. public RestTemplate getRestTemplate() {
  9. return new RestTemplate();
  10. }
  11. }

RestTemplate 是什么?

RestTemplate 提供了多种便捷访问远程 Http 服务的方法,是一种简单便捷的访问 Restful 服务模板类,是 Spring 提供的用于访问 Rest 服务的客户端模板工具集

RestTemplate 官网及使用

  • 官网:https://docs.spring.io/spring-framework/docs/4.3.7.RELEASE/javadoc-api/org/springframework/web/client/RestTemplate.html
  • 使用:使用 RestTemplate 访问 Restful 接口非常的简单粗暴无脑(url, requestMap, ResponseBean.class),这三个参数分别代表 Rest 请求地址、请求参数、Http 响应转换被转换成的对象类型。

j、修改子模块 cloud-consumer-order80,目录 /src/main/java 中新建包 com.atguigu.springcloud.controller

k、修改子模块 cloud-consumer-order80,包 com.atguigu.springcloud.controller 中新建 OrderController.java

  1. package com.atguigu.springcloud.controller;
  2. import com.atguigu.springcloud.entities.CommonResult;
  3. import com.atguigu.springcloud.entities.Payment;
  4. import lombok.extern.slf4j.Slf4j;
  5. import org.springframework.web.bind.annotation.GetMapping;
  6. import org.springframework.web.bind.annotation.PathVariable;
  7. import org.springframework.web.bind.annotation.RestController;
  8. import org.springframework.web.client.RestTemplate;
  9. import javax.annotation.Resource;
  10. @RestController
  11. @Slf4j
  12. public class OrderController {
  13. public static final String PAYMENT_URL = "http://localhost:8001";
  14. @Resource
  15. private RestTemplate restTemplate;
  16. @GetMapping("/consumer/payment/create")
  17. public CommonResult<Payment> create(Payment payment) {
  18. return restTemplate.postForObject(PAYMENT_URL + "/payment/create", payment, CommonResult.class);// 写
  19. }
  20. @GetMapping("/consumer/payment/get/{id}")
  21. public CommonResult<Payment> getPayment(@PathVariable("id") Long id) {
  22. return restTemplate.getForObject(PAYMENT_URL + "/payment/get/" + id, CommonResult.class);
  23. }
  24. }

l、测试子模块 cloud-consumer-order80

  • 启动子模块 cloud-provider-payment8001
  • 启动子模块 cloud-consumer-order80
  • http://localhost/consumer/payment/get/31
    在这里插入图片描述

2.4-微服务工程重构

系统中有重复代码,需要重构
在这里插入图片描述
a、右击父工程 mscloud,新建子模块 cloud-api-commons
在这里插入图片描述
b、修改子模块 cloud-api-commons 中 pom.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5. <modelVersion>4.0.0</modelVersion>
  6. <parent>
  7. <artifactId>cloud2020</artifactId>
  8. <groupId>com.atguigu.springcloud</groupId>
  9. <version>1.0-SNAPSHOT</version>
  10. </parent>
  11. <artifactId>cloud-api-commons</artifactId>
  12. <dependencies>
  13. <dependency>
  14. <groupId>org.springframework.boot</groupId>
  15. <artifactId>spring-boot-devtools</artifactId>
  16. <scope>runtime</scope>
  17. <optional>true</optional>
  18. </dependency>
  19. <dependency>
  20. <groupId>org.projectlombok</groupId>
  21. <artifactId>lombok</artifactId>
  22. <optional>true</optional>
  23. </dependency>
  24. <dependency>
  25. <groupId>cn.hutool</groupId>
  26. <artifactId>hutool-all</artifactId>
  27. <version>5.1.0</version>
  28. </dependency>
  29. </dependencies>
  30. </project>

c、修改子模块 cloud-api-commons,目录 /src/main/java 中新建包 com.atguigu.springcloud.entities**

d、复制子模块 cloud-consumer-order80 中包 com.atguigu.springcloud.entities 内容到子模块 cloud-api-commons 包 com.atguigu.springcloud.entities

e、父工程 mscloud,执行 Maven 命令 mvn clean install
在这里插入图片描述
f、删除子模块 cloud-consumer-order80、cloud-provider-payment8001 中包 com.atguigu.springcloud.entities

g、修改子模块 cloud-consumer-order80 中 pom.xml
在这里插入图片描述

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5. <modelVersion>4.0.0</modelVersion>
  6. <parent>
  7. <artifactId>cloud2020</artifactId>
  8. <groupId>com.atguigu.springcloud</groupId>
  9. <version>1.0-SNAPSHOT</version>
  10. </parent>
  11. <artifactId>cloud-consumer-order80</artifactId>
  12. <dependencies>
  13. <dependency>
  14. <groupId>com.atguigu.springcloud</groupId>
  15. <artifactId>cloud-api-commons</artifactId>
  16. <version>${project.version}</version>
  17. </dependency>
  18. <dependency>
  19. <groupId>org.springframework.boot</groupId>
  20. <artifactId>spring-boot-starter-web</artifactId>
  21. </dependency>
  22. <dependency>
  23. <groupId>org.springframework.boot</groupId>
  24. <artifactId>spring-boot-starter-actuator</artifactId>
  25. </dependency>
  26. <dependency>
  27. <groupId>org.springframework.boot</groupId>
  28. <artifactId>spring-boot-devtools</artifactId>
  29. <scope>runtime</scope>
  30. <optional>true</optional>
  31. </dependency>
  32. <dependency>
  33. <groupId>org.projectlombok</groupId>
  34. <artifactId>lombok</artifactId>
  35. <optional>true</optional>
  36. </dependency>
  37. <dependency>
  38. <groupId>org.springframework.boot</groupId>
  39. <artifactId>spring-boot-starter-test</artifactId>
  40. <scope>test</scope>
  41. </dependency>
  42. </dependencies>
  43. </project>

h、修改子模块 cloud-provider-payment8001 中 pom.xml
在这里插入图片描述

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5. <modelVersion>4.0.0</modelVersion>
  6. <parent>
  7. <artifactId>cloud2020</artifactId>
  8. <groupId>com.atguigu.springcloud</groupId>
  9. <version>1.0-SNAPSHOT</version>
  10. </parent>
  11. <artifactId>cloud-provider-payment8001</artifactId>
  12. <dependencies>
  13. <dependency>
  14. <groupId>com.atguigu.springcloud</groupId>
  15. <artifactId>cloud-api-commons</artifactId>
  16. <version>${project.version}</version>
  17. </dependency>
  18. <dependency>
  19. <groupId>org.springframework.boot</groupId>
  20. <artifactId>spring-boot-starter-web</artifactId>
  21. </dependency>
  22. <dependency>
  23. <groupId>org.springframework.boot</groupId>
  24. <artifactId>spring-boot-starter-actuator</artifactId>
  25. </dependency>
  26. <dependency>
  27. <groupId>org.mybatis.spring.boot</groupId>
  28. <artifactId>mybatis-spring-boot-starter</artifactId>
  29. </dependency>
  30. <dependency>
  31. <groupId>com.alibaba</groupId>
  32. <artifactId>druid-spring-boot-starter</artifactId>
  33. <version>1.1.10</version>
  34. </dependency>
  35. <dependency>
  36. <groupId>mysql</groupId>
  37. <artifactId>mysql-connector-java</artifactId>
  38. </dependency>
  39. <dependency>
  40. <groupId>org.springframework.boot</groupId>
  41. <artifactId>spring-boot-starter-jdbc</artifactId>
  42. </dependency>
  43. <dependency>
  44. <groupId>org.springframework.boot</groupId>
  45. <artifactId>spring-boot-devtools</artifactId>
  46. <scope>runtime</scope>
  47. <optional>true</optional>
  48. </dependency>
  49. <dependency>
  50. <groupId>org.projectlombok</groupId>
  51. <artifactId>lombok</artifactId>
  52. <optional>true</optional>
  53. </dependency>
  54. <dependency>
  55. <groupId>org.springframework.boot</groupId>
  56. <artifactId>spring-boot-starter-test</artifactId>
  57. <scope>test</scope>
  58. </dependency>
  59. <dependency>
  60. <groupId>org.springframework.boot</groupId>
  61. <artifactId>spring-boot-devtools</artifactId>
  62. <scope>runtime</scope>
  63. <optional>true</optional>
  64. </dependency>
  65. </dependencies>
  66. </project>

发表评论

表情:
评论列表 (有 0 条评论,281人围观)

还没有评论,来说两句吧...

相关阅读

    相关 如何快速一个服务架构

    微服务火了很久,但网上很少有文章能做到成熟地将技术传播出来,同时完美地照顾“初入微服务领域人员”,从 0 开始,采用通俗易懂的语言去讲解微服务架构的系列。所以,我们策划了这篇文