spring-boot 多模块化项目和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>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。启动服务器。
spring-boot 多模块化项目和EurekaServer的搭建的更多相关文章
- 从零一起学Spring Boot之LayIM项目长成记(五)websocket
前言 距离上一篇已经比较久的时间了,项目也是开了个头.并且,由于网上的关于Spring Boot的websocket讲解也比较多.于是我采用了另外的一个通讯框架 t-io 来实现LayIM中的通讯功能 ...
- 从零一起学Spring Boot之LayIM项目长成记(四) Spring Boot JPA 深入了解
前言 本篇内容主要是一些关于JPA的常用的一些用法等.内容也是很多是看其他博客学来的,顺道在本系列博客里抽出一篇作为总结.下面让我们来看看吧. 不过我更推荐大家读本篇:https://lufficc. ...
- 从零一起学Spring Boot之LayIM项目长成记(三) 数据库的简单设计和JPA的简单使用。
前言 今天是第三篇了,上一篇简单模拟了数据,实现了LayIM页面的数据加载.那么今天呢就要用数据库的数据了.闲言少叙,书归正传,让我们开始吧. 数据库 之前有好多小伙伴问我数据库是怎么设计的.我个人用 ...
- Spring Boot 2.0系列文章(五):Spring Boot 2.0 项目源码结构预览
关注我 转载请务必注明原创地址为:http://www.54tianzhisheng.cn/2018/04/15/springboot2_code/ 项目结构 结构分析: Spring-boot-pr ...
- 使用Spring Boot开发Web项目(二)之添加HTTPS支持
上篇博客使用Spring Boot开发Web项目我们简单介绍了使用如何使用Spring Boot创建一个使用了Thymeleaf模板引擎的Web项目,当然这还远远不够.今天我们再来看看如何给我们的We ...
- Github 上 Star 最多的个人 Spring Boot 开源学习项目
2016年,在一次技术调研的过程中认识到了 Spring Boot ,试用之后便一发不可收拾的爱上它.为了防止学习之后忘记,就在网上连载了 Spring Boot 系列文章,没想到这一开始便与 Spr ...
- Spring Boot 多模块项目创建与配置 (一) (转)
Spring Boot 多模块项目创建与配置 (一) 最近在负责的是一个比较复杂项目,模块很多,代码中的二级模块就有9个,部分二级模块下面还分了多个模块.代码中的多模块是用maven管理的,每个模块都 ...
- Spring Boot 2 (七):Spring Boot 如何解决项目启动时初始化资源
Spring Boot 2 (七):Spring Boot 如何解决项目启动时初始化资源 在项目启动的时候需要做一些初始化的操作,比如初始化线程池,提前加载好加密证书等.今天就给大家介绍一个 Spri ...
- Spring boot 多模块项目 + Swagger 让你的API可视化
Spring boot 多模块项目 + Swagger 让你的API可视化 前言 手写 Api 文档的几个痛点: 文档需要更新的时候,需要再次发送一份给前端,也就是文档更新交流不及时. 接口返回结果不 ...
随机推荐
- js中的Object.defineProperty()和defineProperties()详解
ECMAS-262第5版在定义只有内部采用的特性时,提供了描述了属性特征的几种属性.ECMAScript对象中目前存在的属性描述符主要有两种,数据描述符(数据属性)和存取描述符(访问器属性),数据描述 ...
- 实战DeviceIoControl 之一:通过API访问设备驱动程序
Q 在NT/2000/XP中,我想用VC编写应用程序访问硬件设备,如获取磁盘参数.读写绝对扇区数据.测试光驱实际速度等,该从哪里入手呢? A 在NT/2000/XP中,应用程序可以通过API函数Dev ...
- 笔记︱金融风险控制基础常识——巴塞尔协议+信用评分卡Fico信用分
每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 本笔记源于CDA-DSC课程,由常国珍老师主讲 ...
- mongodb: Remote server has closed the connection
<?php function getMongoClient($seeds = "", $options = array(), $retry = 3) { try { retu ...
- (八)java垃圾回收和收尾
垃圾回收机制:当一个对象不再被引用时,或者说当一个对象的引用不存在时,我们就认为该对象不再被需要,它所占用的内存就会被释放掉. 垃圾回收只是在程序执行过程中偶尔发生,java不同的运行时刻会产 ...
- SCADA系统
简介编辑 在电力系统中,SCADA系统应用最为广泛,技术发展也最为成熟.它在远动系统中占重要地位,可以对现场 SCADA系统 的运行设备进行监视和控制,以实现数据采集.设备控制.测量.参数调节以及各类 ...
- org.hibernate.exception.ConstraintViolationException
1.错误描述 Caused by:org.hibernate.exception.ConstraintViolationException:Could not execute JDBC batch u ...
- 命令行工具osql.exe使用
目标: 快速在21个库修改Test表的某条记录,这几个库都分别在不同的服务器上. 通常会想到,到每个库都执行一下语句不就好了吗?这个数据库切换来切换去,挺麻烦了,通过命令行工具osql.exe就可以快 ...
- 对spring web启动时IOC源码研究(二)
发现这样debug到哪说到哪好像有点回不来了~让我重新理下思路,主要步骤先上图,有什么不同意见欢迎批评教育~ (一)spring IOC的主要步骤都在refresh()这个方法中,我给出了自己的理解注 ...
- studio设置File Templates
从项目的整体风格考虑,对所有类要进行必要的说明,就注释说明来说首先需要说明是作者,文件创建时间,业务功能说明,这几项是基本的内容,而添加这些说明内容以前可能手动的添加文件标题头,这种做法现在都非常过时 ...