SpringCloud 学习笔记总结
Posted IT_Holmes
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringCloud 学习笔记总结相关的知识,希望对你有一定的参考价值。
文章目录
- 1. 基于分布式的微服务架构
- 2. SpringBoot 和 SpringCloud 版本
- 3. 由SpringCloud官方参考文档 来决定使用哪个版本的SpringBoot
- 3. SpringCloud 维护升级以及每个服务对应的技术架构
- 4. 微服务cloud整体 聚合父工程Project
- 5.微服务cloud整体 父工程pom.xml文件配置
- 6. SpringBoot 整合mybatis
- 7. 热部署 Devtools
- 8. Dashboard的使用
- 9. 公用模块-common
- 10. Hutool包的使用
- 11. Maven项目 如何转成SpringBoot项目
介绍SpringCloud,以及搭建环境。
1. 基于分布式的微服务架构
SpringCloud是分布式微服务架构的一站式解决方案,是多种微服务架构落地技术的集合体。俗称:微服务全家桶。
整体架构图:
2. SpringBoot 和 SpringCloud 版本
之前SpringCloud有D版和SpringBoot 1.X版配合搭建,这两个版本已经过时了。
现在使用SpringCloud H版和SpringBoot 2.X版。
SpringCloud的版本命名规则:
SpringBoot和SpringCloud有严格的版本对应,他们之前不同版本可能存在冲突!因此必须严格按照官网来对应。
更详细的版本对应查看网址:http://start.spring.io/actuator/info
之后使用,JSON处理工具:tool.lu 格式化出来:
之后学习的环境搭建版本:
3. 由SpringCloud官方参考文档 来决定使用哪个版本的SpringBoot
3. SpringCloud 维护升级以及每个服务对应的技术架构
以下红叉的是已经停止更新维护的。
服务注册中心:
服务调用:
服务降级(熔断):
服务网关:
服务配置:
服务总线:
总体上,技术图:
4. 微服务cloud整体 聚合父工程Project
因为使用的是maven环境,就是约定 > 配置 > 编码
。
第一步:创建maven父工程项目,选择maven版本。
第二步:修改整个项目环境的字符编码集,改为UTF-8。
Transparent native-to-ascii conversion的意思是:自动转换ASCII编码。
第三步:注解生效激活。
- 启动注解处理:
第四步:java编辑版本选择8版本。
第五步:File Type 过滤,随意设置,这个就是过滤那些像.idea ,.iml等等的这种和代码本身没有直接关联的可以不让他们显示。
5.微服务cloud整体 父工程pom.xml文件配置
第一步:packaging设置为pom,父工程都会设置为pom。
第二步:除了pom,像src文件夹都删除掉。
第三步:配置pom文件相关依赖版本。
<?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.itholmes.springcloud</groupId>
<artifactId>cloud2020</artifactId>
<version>1.0-SNAPSHOT</version>
<!--父工程打包方式一定是pom-->
<packaging>pom</packaging>
<!--统一管理jar包版本呢-->
<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>
<log4j.version>1.2.17</log4j.version>
<lombk.version>1.16.18</lombk.version>
<mysql.version>8.0.18</mysql.version>
<druid.version>1.1.16</druid.version>
<mybatis.spring.boot.version>1.3.0</mybatis.spring.boot.version>
</properties>
<!--dependencyManagement的作用:子模块继承之后,提供的作用:锁定版本+子module不用写groupId和version-->
<dependencyManagement>
<dependencies>
<!--springboot 2.2.2版本-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.2.2.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--spring cloud Hoxton.SR1-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Hoxton.SR1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--spring cloud alibaba 2.1.0 RELEASE-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.1.0.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--mybatis版本-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>$mybatis.spring.boot.version</version>
</dependency>
<!--junit-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>$junit.version</version>
</dependency>
<!--log4j-->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>$log4j.version</version>
</dependency>
</dependencies>
</dependencyManagement>
<name>Maven</name>
<!-- FIXME change it to the project's website -->
<url>http://maven.apache.org/</url>
<inceptionYear>2001</inceptionYear>
</project>
可以跳过单元测试的按钮:
6. SpringBoot 整合mybatis
type-aliases-package可以生命别名!!
mybatis:
mapper-locations: classpath:mapper/*.xml
type-aliases-package: com.itholmes.springcloud.entities # 所有Entity别名类所在包
useGeneratedKeys=“true” 和 keyProperty主键 从而返回值就是主键ID值:
- keyProperty中对应的值是实体类的属性,而不是数据库的字段。
<insert id="create" parameterType="Payment" useGeneratedKeys="true" keyProperty="id">
insert into payment (serial) values (#serial)
</insert>
7. 热部署 Devtools
第一步:Adding devtools 。
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-devtools -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<version>2.7.0</version>
</dependency>
第二步:Adding plugin。
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<!-- <version>2.6.7</version>-->
<configuration>
<!--fork 设置为 true,实际上是会在 maven 编译的时候新创建一个虚拟机执行。这个新创建 JVM 就是这里的 fork。-->
<fork>true</fork>
<addResources>true</addResources>
</configuration>
</plugin>
</plugins>
</build>
第三步:Enabling automatic build。设置idea。
第四步:update the value of。
在pom.xml文件执行快捷键:
第五步:重启idea,这样就会热部署自动化配置了。
8. Dashboard的使用
启动多个项目的时候,就使用idea的Dashboard。
如何让Run Dashboard显示到idea的下方任务栏中:
第一步:打开父项目对应的.idea目录,找到workspace.xml文件。
第二步:添加配置如下中:
第三步:重启idea就可以了。
9. 公用模块-common
一般多个微服务都会公用一个公用模块项目(一般叫做common)。
这个项目存放的一般都是pojo类,Utils工具类等等公共代码。通过maven的install或者deploy的特性,通过GAV添加对应依赖,从本地或者私服来获得该jar包。
10. Hutool包的使用
Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率。
Hutool是项目中“util”包友好的替代
,它节省了开发人员对项目中公用类和公用工具方法的封装时间
,使开发专注于业务,同时可以最大限度的避免封装不完善带来的bug。
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.6.5</version>
</dependency>
11. Maven项目 如何转成SpringBoot项目
第一步:导入SpringBoot相关依赖。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
</dependency>
第二步:在Resource目录下,创建application.yml文件。
第三步:在创建对应的SpringBoot启动Main方法。
package com.itholmes.springcloud;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class OrderMain80
public static void main(String[] args)
SpringApplication.run(OrderMain80.class,args);
以上是关于SpringCloud 学习笔记总结的主要内容,如果未能解决你的问题,请参考以下文章