SpringCloud上手實戰 一、初始搭建SpringCloud項目環境

慢慢來比較快,虛心學技術

原文鏈接(歡迎造訪,多多支持):https://www.yuque.com/keep_zero/spring_cloud/fax77c

SpringBoot和SpringCloud?

SpringBoot

Spring Boot是由Pivotal團隊提供的全新框架,其設計目的是用來簡化新Spring應用的初始搭建以及開發過程。該框架使用了特定的方式來進行配置,從而使開發人員不再需要定義樣板化的配置。通過這種方式,Spring Boot致力於在蓬勃發展的快速應用開發領域(rapid application development)成爲領導者。

簡單來說,SpringBoot是一個基於Spring框架之上的開源框架,是Spring的一套快速搭建腳手架,它提供了一種更加簡單快捷的方式來配置和運行web應用程序,從而不需要去設置整個Spring配置。其基本特徵是:“約定優於配置”(提供基於常見開發中常見配置的默認處理)和“開箱即用”(Out Of The Box)

其主要目標如下:

  • 爲所有Spring開發提供一個從根本上更快和更廣泛使用的入門經驗
  • 開箱即用,但你可以通過不採用默認設置來擺脫這種方式
  • 提供一系列大型項目常用的非功能性特徵(如內嵌服務器、安全等)
  • 絕不需要代碼生成和XML配置

SpringCloud

Spring Cloud是一系列框架的有序集合。它利用Spring Boot的開發便利性巧妙地簡化了分佈式系統基礎設施的開發,如服務發現註冊、配置中心、消息總線、負載均衡、斷路器、數據監控等,都可以用Spring Boot的開發風格做到一鍵啓動和部署。Spring Cloud並沒有重複製造輪子,它只是將目前各家公司開發的比較成熟、經得起實際考驗的服務框架組合起來,通過Spring Boot風格進行再封裝屏蔽掉了複雜的配置和實現原理,最終給開發者留出了一套簡單易懂、易部署和易維護的分佈式系統開發工具包。

簡單來說,SpringCloud基於SpringBoot的一套微服務架構體系解決方案,用於整合微服務應用

包括兩個組成:

1、對現有的成熟框架SpringBoot的封裝和抽象,相當於SpringBoot項目的集合

2、對一部分分佈式系統的基礎設施的實現,如配置中心,服務治理中心,監控中心等

SpringBoot & SpringCloud

  • SpringBoot是基於Spring的一套快速搭建腳手架,可以用於快速開發單個微服務應用
  • SpringCloud是基於SpringBoot的一套微服務架構體系**解決方案,用於整合微服務應用
  • SpringBoot專注於單個微服務應用,而SpringCloud專注於全局的微服務治理
  • SpringBoot可以離開SpringCloud獨立開發應用,SpringCloud離不開SpringBoot

搭建SpringCloud的初始環境

SpringCloud的版本:

大多數Spring項目都是以“主版本號.次版本號.增量版本號.里程碑版本號”的形式命名版本號

例如Spring Framework穩定版本4.3.5.RELEASE、里程碑版本5.0.0.M4等。其中,主版本號表示項目的重大重構;次版本號表示新特性的添加和變化;增量版本號一般表示bug修復;里程碑版本號表示某版本號的里程碑。

本項目選用核心依賴版本說明:

  • Spring Cloud Greenwich.SR2
  • Spring Boot 2.1.3.RELEASE
  • Spring Platform Cairo-SR7

創建空Maven項目(父項目)

SpringBoot支持JDK1.6以上版本

在pom.xml中引入基本依賴

原始pom.xml文件內容如下:

<pre class="cm-s-default" style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);"><?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.springcloud</groupId> <artifactId>com.springcloud.demo</artifactId> <packaging>pom</packaging> <version>1.0-SNAPSHOT</version> </project></pre>

1、繼承Spring Boot Starter,聲明自身是SpringBoot項目

spring-boot-starter-parent 是一個特殊的starter,它用來提供相關的Maven默認依賴。使用它之後,常用的包依賴可以省去version標籤

<pre class="cm-s-default" style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);"><!-- 引入spring boot starter的依賴 --> <parent>  <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.3.RELEASE</version> </parent></pre>

2、統一版本管理(可有可無)

<pre class="cm-s-default" style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);"> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <java.version>1.8</java.version> <project.version>1.0-SNAPSHOT</project.version>   <spring-boot.version>2.1.3.RELEASE</spring-boot.version> <spring-cloud.version>Greenwich.RELEASE</spring-cloud.version> <spring-platform.version>Cairo-SR7</spring-platform.version>   <druid.version>1.1.10</druid.version> <mysql.version>5.1.45</mysql.version> <hutool.version>4.4.5</hutool.version> <mybatis-plus.version>3.1.0</mybatis-plus.version> </properties>   <dependencyManagement>  <dependencies> <!--統一管理spring boot相關依賴版本--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>${spring-boot.version}</version> <type>pom</type> <scope>import</scope> </dependency> <!--統一管理spring cloud相關依賴版本--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> <!--spring版本管理工具--> <!--使用這一依賴可以實現spring相關第三方依賴自動適配版本號而不需要填寫version--> <dependency> <groupId>io.spring.platform</groupId> <artifactId>platform-bom</artifactId> <version>${spring-platform.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement></pre>

3、安裝Maven插件spring-boot-maven-plugin (作爲父工程實際上可以沒有,此處引入亦可)

該插件可以以Maven的方式爲應用提供Spring Boot的支持,即****能夠將Spring Boot應用打包爲可執行的jar或war文件,然後以通常的方式運行Spring Boot應用

<pre class="cm-s-default" style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);"><build>  <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build></pre>

4、強制使用阿里雲倉庫(覆蓋maven的setting配置,可有可無)

<pre class="cm-s-default" style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);"><repositories>  <repository> <id>aliyun</id> <name>aliyun</name> <url>https://maven.aliyun.com/repository/public</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories></pre>

完整pom.xml文件:

<pre class="cm-s-default" style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);"><?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.springcloud</groupId> <artifactId>com.springcloud.demo</artifactId> <packaging>pom</packaging> <version>1.0-SNAPSHOT</version> <!-- 引入spring boot starter的依賴 --> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.3.RELEASE</version> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <java.version>1.8</java.version> <project.version>1.0-SNAPSHOT</project.version>  <spring-boot.version>2.1.3.RELEASE</spring-boot.version> <spring-cloud.version>Greenwich.RELEASE</spring-cloud.version> <spring-platform.version>Cairo-SR7</spring-platform.version>  <druid.version>1.1.10</druid.version> <mysql.version>5.1.45</mysql.version> <hutool.version>4.4.5</hutool.version> <mybatis-plus.version>3.1.0</mybatis-plus.version> </properties> <dependencies> <!-- 引入Lombok --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency>  <!--引入測試依賴--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-test</artifactId> <scope>test</scope> </dependency>  <!--引入測試依賴--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <scope>test</scope> </dependency> </dependencies> <dependencyManagement> <dependencies> <!--統一管理spring boot相關依賴版本--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>${spring-boot.version}</version> <type>pom</type> <scope>import</scope> </dependency> <!--統一管理spring cloud相關依賴版本--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> <!--spring版本管理工具--> <!--使用這一依賴可以實現spring相關第三方依賴自動適配版本號而不需要填寫version--> <dependency> <groupId>io.spring.platform</groupId> <artifactId>platform-bom</artifactId> <version>${spring-platform.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <!-- 添加spring-boot的maven插件,不能少,打jar包時得用 --> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> <!--強制使用阿里雲倉庫--> <repositories> <repository> <id>aliyun</id> <name>aliyun</name> <url>https://maven.aliyun.com/repository/public</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories> </project></pre>

總結

1、SpringBoot是基於Spring的一套快速搭建腳手架,可以用於快速開發單個微服務應用

2、SpringCloud是基於SpringBoot的一套微服務架構體系解決方案,用於整合微服務應用

如有貽誤,還請評論指正

點擊關注,持續更新哦

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章