Spring boot由於其
1、易於開發和維護。2、單個微服務啟動快。3、局部修改部署容易。4、技術棧不受語言限制等優點受到越來越多公司的重視。spring-boot還集成了許多關於微服務開發的框架(例如配置管理,服務發現,斷路器,智能路由,微代理,控制總線,一次性令牌,全局鎖,領導選舉,分布式 會話,群集狀態),使我們部署微服務免去了繁瑣的配置。
下面我們來學習利用spring-boot搭建電商項目。
Spring Boot 2.0.0-SNAPSHOT 要求 Java 8 和 Spring Framework 5.0.2以上,Maven 3.2 以上或者Gradle 4。
本文使用 Spring Boot 2.0.0-SNAPSHOT Java9 和 Spring Framework 5.0.2.RELEASE以上,Maven 3.3.9。開發工具使用sping官方提供的spring suit tool 3.9.1(STS)。
一、Spring多模塊化項目的搭建
首先我們需要建立一個Spring-boot的父項目,一個多模塊項目通過一個父POM 引用一個或多個子模塊來定義。
<!-- 定義spring-cloud的路徑 --> <groupId>com.hzt.cloud</groupId> <artifactId>esupermarket</artifactId> <!-- 自定義父項目的版本 --> <version>1.0.0</version> <!-- 假如為父項目,打包方式必須為pom --> <packaging>pom</packaging>
並且刪除文件根目錄下所有文件,只留下pom.xml即可。
<!-- 使當前項目繼承spring-boot 2.0 --> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.9.RELEASE</version> </parent>
然后定義我們所需要的spring-boot的版本,這樣我們項目就是使用的spring-boot 2.0版本了。
<!-- 定義繼承此父類的子模塊,module中填寫的為子模塊的 artifactId--> <modules> <module>eureka-server</module> <module>eureka-server1</module> </modules>
同時插入我們即將定義的子模塊,這樣子模塊既可以使用父模塊中引入的依賴。
<dependencyManagement> <dependencies> <!-- 加入spring-boot 關於web的依賴 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- 統一依賴管理 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
加入spring-boot關於web以及統一依賴管理的模塊.
<!-- 倉庫管理 --> <repositories> <repository> <id>spring-milestones</id> <name>Spring Milestones</name> <url>https://repo.spring.io/milestone</url> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories>
這樣我們父類模塊的pom即搭建成功.
二、子模塊 EurekaServer服務的搭建
右鍵父模塊 new -> mavenmodule ,創建一個子模塊
1、pom.xml的配置
<modelVersion>4.0.0</modelVersion> <!-- 項目名 , 不需要groupId和name標簽--> <artifactId>eureka-server1</artifactId> <!-- 打包方式 --> <packaging>jar</packaging> <!-- 繼承的父類 , 為父模塊 --> <parent> <groupId>com.hzt.cloud</groupId> <artifactId>esupermarket</artifactId> <!-- 版本為父類定義的version標簽 --> <version>1.0.0</version> <relativePath/> </parent> <dependencies> <!-- 引入關於 eureka-server的依賴 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency>
<!-- 用於注冊中心訪問賬號認證 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency> </dependencies>
其中,spring-boot 2.0和2.0以前引入 eureka-server的artifactId有所區別。
2、啟動類
@SpringBootApplication//啟動注解,表示此為spring-boot的一個入口類 @EnableEurekaServer//此行注解代表為一個服務注冊組件,此注解僅適用於eureka //@EnableDiscoveryClient//此注解同上,但是適用於其他服務注冊主件 public class EurekaServerApplication { public static void main(String[] args) { SpringApplication.run(EurekaServerApplication.class, args); } }
我們可以根據不同的服務發現方式定義不同的注解。@EnableDiscoveryClient注解可以支持其他的服務發現方式。
3、application.yml配置文件
server:
#配置eurekaServer的端口號
port: 8761
security:
basic:
#代表開啟賬號密碼認證,登錄eurekaServer時需要輸入賬號密碼
enabled: true
user:
name: root
password: 123
eureka:
client:
service-url:
#代表注冊到eureka服務端的地址
defaultZone: http://root:123@127.0.0.1:8761/eureka
#該服務為注冊中心,增加此行代表不在注冊中心注冊自己
register-with-eureka: false
#由於注冊中心呢的職責是維護實例,為FALSE代表其不用去檢索服務
fetch-registry: false
#配置主機名
instance:
hostname: peer1
#配置服務名
security:
basic:
#代表開啟賬號密碼認證
enabled: true
user:
name: root
password: 123
同理 , 我們可以配置一個eurekaServer1搭建eurekaServer的高可用集群。其中peer1為我本地機器上配置的負載地址,指向www.peer1.com。啟動服務器。