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。啟動服務器。
