一、Springboot和SpringCloud的技术版本选型

1、Springboot官网上的版本

image.png

2、SpringCloud官网上的版本

image.png

3、Springboot和SpringCloud技术版本的匹配

image.png

  1. "spring-cloud":{
  2. "Hoxton.SR12":"Spring Boot >=2.2.0.RELEASE and <2.4.0.M1",
  3. "2020.0.5":"Spring Boot >=2.4.0.M1 and <2.6.0-M1",
  4. "2021.0.0-M1":"Spring Boot >=2.6.0-M1 and <2.6.0-M3",
  5. "2021.0.0-M3":"Spring Boot >=2.6.0-M3 and <2.6.0-RC1",
  6. "2021.0.0-RC1":"Spring Boot >=2.6.0-RC1 and <2.6.1",
  7. "2021.0.1":"Spring Boot >=2.6.1 and <2.6.5-SNAPSHOT",
  8. "2021.0.2-SNAPSHOT":"Spring Boot >=2.6.5-SNAPSHOT and <3.0.0-M1",
  9. "2022.0.0-M1":"Spring Boot >=3.0.0-M1 and <3.1.0-M1"
  10. },

4、SpringCloud中的组件目前主流所使用的技术选型

image.png

二、SpringCloud的项目创建(Springboot 2.2.X 版本 SpringCloud S 版本)

注意:以下使用 订单——支付模块 进行融合
约定>配置>编码
image.png

1、使用IDEA构建项目

第一步:

image.png

第二步:

image.png

第三步:

父工程创建好,则导入pom依赖:

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

注:

  1. dependencyManagement
  2. Maven 使用dependencyManagement 元素来提供了一种管理依赖版本号的方式。
  3. 通常会在一个组织或者项目的最顶层的父POM 中看到dependencyManagement 元素。
  4. 使用pom.xml 中的dependencyManagement 元素能让所有在子项目中引用一个依赖而不用显式的列出版本号。
  5. Maven 会沿着父子层次向上走,直到找到一个拥有dependencyManagement 元素的项目,然后它就会使用这个
  6. dependencyManagement 元素中指定的版本号。
  7. 这样做的好处就是:如果有多个子项目都引用同一样依赖,则可以避免在每个使用的子项目里都声明一个版本号,这样当想升级或切换到另一个版本时,只需要在顶层父容器里更新,而不需要一个一个子项目的修改 ;另外如果某个子项目需要另外的一个版本,只需要声明version就可。
  8. * dependencyManagement里只是声明依赖,并不实现引入,因此子项目需要显示的声明需要用的依赖。
  9. * 如果不在子项目中声明依赖,是不会从父项目中继承下来的;只有在子项目中写了该依赖项,并且没有指定具体版本,
  10. 才会从父项目中继承该项,并且versionscope都读取自父pom;
  11. * 如果子项目中指定了版本号,那么会使用子项目中指定的jar版本。

第四步:

如何构建微服务模块?

  1. 1、建module
  2. 2、改pom
  3. 3、写YML
  4. 4、主启动
  5. 5、业务类

4.1 cloud-provider-payment8001 改pom

  1. <dependencies>
  2. <dependency>
  3. <groupId>org.springframework.boot</groupId>
  4. <artifactId>spring-boot-starter-web</artifactId>
  5. </dependency>
  6. <dependency>
  7. <groupId>org.springframework.boot</groupId>
  8. <artifactId>spring-boot-starter-actuator</artifactId>
  9. </dependency>
  10. <dependency>
  11. <groupId>org.mybatis.spring.boot</groupId>
  12. <artifactId>mybatis-spring-boot-starter</artifactId>
  13. </dependency>
  14. <dependency>
  15. <groupId>com.alibaba</groupId>
  16. <artifactId>druid-spring-boot-starter</artifactId>
  17. <version>1.1.10</version>
  18. </dependency>
  19. <!--mysql-connector-java-->
  20. <dependency>
  21. <groupId>mysql</groupId>
  22. <artifactId>mysql-connector-java</artifactId>
  23. </dependency>
  24. <!--jdbc-->
  25. <dependency>
  26. <groupId>org.springframework.boot</groupId>
  27. <artifactId>spring-boot-starter-jdbc</artifactId>
  28. </dependency>
  29. <dependency>
  30. <groupId>org.springframework.boot</groupId>
  31. <artifactId>spring-boot-devtools</artifactId>
  32. <scope>runtime</scope>
  33. <optional>true</optional>
  34. </dependency>
  35. <dependency>
  36. <groupId>org.projectlombok</groupId>
  37. <artifactId>lombok</artifactId>
  38. <optional>true</optional>
  39. </dependency>
  40. <dependency>
  41. <groupId>org.springframework.boot</groupId>
  42. <artifactId>spring-boot-starter-test</artifactId>
  43. <scope>test</scope>
  44. </dependency>
  45. </dependencies>

4.2 写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 # mysql驱动包 com.mysql.jdbc.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 # 所有Entity别名类所在包

4.3 主启动类

  1. /**
  2. * 主启动类
  3. * @author dongxinxin
  4. * @create 2022-03-06 13:11
  5. */
  6. @SpringBootApplication
  7. public class PaymentMain8001 {
  8. public static void main(String[] args) {
  9. SpringApplication.run(PaymentMain8001.class);
  10. }
  11. }