spring-boot 2.0 多模块化项目和EurekaServer的搭建

Posted zeryts

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring-boot 2.0 多模块化项目和EurekaServer的搭建相关的知识,希望对你有一定的参考价值。

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的搭建的主要内容,如果未能解决你的问题,请参考以下文章

多模块 Gradle 项目 - 从 Spring-Boot 1.5 迁移到 2.1

Spring-Boot 多模块项目加载属性文件

是否可以从 Maven 多模块项目的父模块中的配置文件夹加载 Spring-Boot 属性?

使用gradle BOM和spring-boot(多模块应用程序)哪种方式更好

是否可以创建一个 spring-boot 自定义父 pom 这也是一个多模块项目?

spring-boot2.0 Mybatis多数据源配置