SpringCloud入门

0.微服务概述

回顾架构

  • 三层架构+MVC
  • 开源框架
    • Spring
      • IOC:控制反转
      • AOP:切面(本质动态代理)
      • AOP为了在不影响业务本来的情况下,实现动态增加功能,大量应用在日志,事务等方面。
    • spring是一个轻量级的Java开源框架,容器
    • 目的是:解决企业开发的复杂性问题,但随着时间的推移,配置文件越来越多,开始变得复杂起来
    • SpringBoot
      • SpringBoot不是新的东西,是Spring的升级版
      • 新一代的JavaEE开发标准,开箱即用---->拿过来就可以使用
      • 自动帮我们配置了非常多的东西
      • 特性:开箱即用

随着公司体系越来越大

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

 

 

 

 

待补充。。。

posted @ 2020-09-04 17:24  罗晓峥  阅读(193)  评论(0)    收藏  举报