SpringCloud入门
0.微服务概述
回顾架构
- 三层架构+MVC
- 开源框架
- Spring
- IOC:控制反转
- AOP:切面(本质动态代理)
- AOP为了在不影响业务本来的情况下,实现动态增加功能,大量应用在日志,事务等方面。
- spring是一个轻量级的Java开源框架,容器
- 目的是:解决企业开发的复杂性问题,但随着时间的推移,配置文件越来越多,开始变得复杂起来
- SpringBoot
- SpringBoot不是新的东西,是Spring的升级版
- 新一代的JavaEE开发标准,开箱即用---->拿过来就可以使用
- 自动帮我们配置了非常多的东西
- 特性:开箱即用
- Spring
随着公司体系越来越大
1.什么是SpringCloud
SpringCloud, 基于SpringBoot提供了一套微服务解决方案,包括服务注册与发现,配置中心,全链路监
控,服务网关,负载均衡,熔断器等组件,除了基于NetFlix的开源组件做高度抽象封装之外,还有一些
选型中立的开源组件。
SpringCloud利用SpringBoot的开发便利性,巧妙地简化了分布式系统基础设施的开发,SpringCloud为
开发人员提供了快速构建分布式系统的一些工具,包括配置管理,服务发现,断路器,路由,微代理,
事件总线,全局锁,决策竞选,分布式会话等等,他们都可以用SpringBoot的开发风格做到一键启动和
部署。
SpringBoot并没有重复造轮子,它只是将目前各家公司开发的比较成熟,经得起实际考研的服务框架组
合起来,通过SpringBoot风格进行再封装,屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套
简单易懂,易部署和易维护的分布式系统开发工具包
SpringCloud 是 分布式微服务架构下的一站式解决方案,是各个微服务架构落地技术的集合体,俗称微
服务全家桶。
2.SpringCloud和SpringBoot关系
。。。。
4.Rest微服务构建
1.总体介绍
我们使用一个Dept部门模块做一个微服务通用案例
Consumer消费者(Client)通过REST调用Provicer提供者(Server)提供的服务
Maven的分包分模块架构:
---app-parent:一个父项目(app-parent)聚合很多子项目(app-util,app-dao,app-web.......)
|----pom.xml
|
|----app-core
||------pom.xml
|----app-web
||-------pom.xml
一个父工程带着多个子模块(Module)
SpringCloud父工程(Project)下初次带着三个子模块(Module)
- springcloud-api【封装的整体entity/接口、公共配置等】
- springcloud-provider-dept-8001【服务提供者】
- springcloud-consumer-dept-80【服务消费者】
2.SpringCloud版本选择
待补充
3.创建父工程
新建父工程Maven项目springcloud-parent,切记Packageing是pom模式
主要定义pom文件,将后续各个子模块公用的jar包等统一提取出来。类似一个抽象父类。
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 7 <groupId>com.dz</groupId> 8 <artifactId>springcloud</artifactId> 9 <version>1.0-SNAPSHOT</version> 10 <modules> #####各个子模块##### 11 <module>springcloud-api</module> 12 <module>springcloud-dept-provider-8001</module> 13 <module>springcloud-dept-consumer-80</module> 14 <module>springcloud-eureka-7001</module> 15 <module>springcloud-eureka-7002</module> 16 <module>springcloud-eureka-7003</module> 17 <module>springcloud-dept-provider-8002</module> 18 <module>springcloud-dept-provider-8003</module> 19 </modules> 20 <properties> 21 <junit.version>4.12</junit.version> 22 <log4j.version>1.2.17</log4j.version> 23 <lombok.version>1.16.18</lombok.version> 24 </properties> 25 26 <packaging>pom</packaging> ####打包方式pom#### 27 28 <dependencyManagement> 29 <dependencies> 30 <!-- spring-cloud-dependencies --> ####springcloud依赖###### 31 <dependency> 32 <groupId>org.springframework.cloud</groupId> 33 <artifactId>spring-cloud-dependencies</artifactId> 34 <version>Hoxton.SR4</version> 35 <type>pom</type> 36 <scope>import</scope> 37 </dependency> <!-- spring-boot-dependencies --> 38 <dependency> ######springboot依赖########## 39 <groupId>org.springframework.boot</groupId> 40 <artifactId>spring-boot-dependencies</artifactId> 41 <version>2.2.1.RELEASE</version> 42 <type>pom</type> 43 <scope>import</scope> 44 </dependency> <!-- mysql-connector-java --> 45 <dependency> #####mysql连接依赖######## 46 <groupId>mysql</groupId> 47 <artifactId>mysql-connector-java</artifactId> 48 <version>8.0.21</version> 49 </dependency> <!-- druid --> 50 <dependency> #######druid连接池########## 51 <groupId>com.alibaba</groupId> 52 <artifactId>druid</artifactId> 53 <version>1.1.6</version> 54 </dependency> <!-- mybatis-spring-boot-starter --> 55 <dependency> ########Mybatis依赖###### 56 <groupId>org.mybatis.spring.boot</groupId> 57 <artifactId>mybatis-spring-boot-starter</artifactId> 58 <version>1.3.0</version> 59 </dependency> 60 <dependency> 61 <groupId>ch.qos.logback</groupId> 62 <artifactId>logback-core</artifactId> 63 <version>1.2.3</version> 64 </dependency> 65 <dependency> ######junit测试依赖####### 66 <groupId>junit</groupId> 67 <artifactId>junit</artifactId> 68 <version>${junit.version}</version> #####版本可以提取到properties中##### 69 </dependency> 70 <dependency> ########log4j日志######## 71 <groupId>log4j</groupId> 72 <artifactId>log4j</artifactId> 73 <version>${log4j.version}</version> 74 </dependency> 75 <dependency> #####lombok###### 76 <groupId>org.projectlombok</groupId> 77 <artifactId>lombok</artifactId> 78 <version>${lombok.version}</version> 79 </dependency> 80 </dependencies> 81 </dependencyManagement> 82 </project>
springcloud依赖一般导入有:
spring web依赖,Lombok依赖,mysql连接依赖,druib连接池依赖,junit测试依赖,log4j日志依赖,springcloud依赖,springboot依赖
4.创建api公共模块
新建springcloud-api模块
新建完成后,在父工程中会多出一个modules

待补充。。。
浙公网安备 33010602011771号