1. 程式人生 > >spring-boot 2.0 多模塊化項目和EurekaServer的搭建

spring-boot 2.0 多模塊化項目和EurekaServer的搭建

集群 gem 開啟 優點 pac cat reg manage 框架

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>2.0.0.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:[email protected]:8761/eureka
      #該服務為註冊中心,增加此行代表不在註冊中心註冊自己
    register-with-eureka: false
    #由於註冊中心呢的職責是維護實例,為FALSE代表其不用去檢索服務
    fetch-registry: false
    #配置主機名
  instance:
    hostname: peer1
    #配置服務名
spring:
  application:
    name: eureka-server
    

同理 , 我們可以配置一個eurekaServer1搭建eurekaServer的高可用集群。其中peer1為我本地機器上配置的負載地址,指向www.peer1.com。啟動服務器。

  

spring-boot 2.0 多模塊化項目和EurekaServer的搭建