SpringCloud|SpringCloud 初始化父子项目并集成 Consul 服务发现
SpringCloud 初始化父子项目并集成 Consul 服务发现 准备工作
- IDEA2020.1
- JDK1.8
- Spring Cloud版本:Hoxton.SR5
- Spring Boot 版本:2.3.0.RELEASE
- windows安装:https://www.yuque.com/ekko/app/go38vo
- Mac安装:https://www.yuque.com/ekko/app/nzw3gi
- 服务发现
- Key/Value存储
- 健康检查
先到 https://start.spring.io/ 初始化一个父项目
文章图片
初始化一个父项目
生成之后解压,先用IDE编辑文件修改pom.xml,如下图,在底部
标签下切换国内阿里源
aliyun
aliyun
https://maven.aliyun.com/repository/public
true
false
spring-milestones
Spring Milestones
https://maven.aliyun.com/repository/spring
true
false
保存,然后使用 IDEA 打开,等Maven加载完毕
新建子项目 右击项目名称,New -> Module
文章图片
New -> Module
包名自定义,不一定非要相同,这里的包名或许后面也要改掉
文章图片
设置子模块信息
下一步选择包,先跳过,点击
Finish
完成
关联父子项目 在父
Module
的pom.xml
中的
标签上部新增
pro-service
如图示
文章图片
修改后的父pom
在子项目
pro-service
中的
4.0.0
标签后追加
【SpringCloud|SpringCloud 初始化父子项目并集成 Consul 服务发现】com.github.springtools
SpringCloudPro
0.0.1
到这里会发现
Maven
找不到一些Spring Boot
的依赖在父项目增加管理依赖版本号的定义
文章图片
在父项目增加管理依赖版本号
最终的父项目
pom.xml
4.0.0 com.github.springtools
SpringCloudPro
0.0.1
SpringCloudPro
父项目 pom1.8
Hoxton.SR5
2.3.0.RELEASE
pro-service
org.springframework.cloud
spring-cloud-starter-consul-config
org.springframework.cloud
spring-cloud-starter-consul-discovery
org.springframework.boot
spring-boot-starter-actuator
org.springframework.boot
spring-boot-starter-test
test
org.junit.vintage
junit-vintage-engine
org.springframework.cloud
spring-cloud-dependencies
${spring-cloud.version}
pom
import
org.springframework.boot
spring-boot-dependencies
${spring-boot.version}
pom
import
org.springframework.boot
spring-boot-maven-plugin
aliyun
aliyun
https://maven.aliyun.com/repository/public
true
false
spring-milestones
Spring Milestones
https://maven.aliyun.com/repository/spring
true
false
子项目
pom.xml
4.0.0 com.github.springtools
SpringCloudPro
0.0.1
pro-service
0.0.1
pro-service
业务模块 1.8
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-maven-plugin
项目结构图
文章图片
项目结构图 集成服务发现 Consul 父项目添加如下依赖,在上述的最终父项目
pom.xml
中已经加过了,这里简要说明文章图片
依赖简要说明
在
pro-service
中的
resources
目录下,删除自带的
application.properties
,新增
bootstrap.yml
因为后续的
config
要用到,bootstrap
比application.properties
加载优先级别高完善子项目并注册到 Consul bootstrap.yml
spring:
application:
name: pro-service
cloud:
consul:
discovery:
health-check-path: /actuator/health# 检测实例健康
health-check-interval: 10s# 每隔10s检查
hostname: localhost# 配置实例地址
register: true# 自动注册
service-name: ${spring.application.name} # 实例名称
host: localhost
port: 8500
ps:这里的
spring.application.name
与spring.cloud.consul.discovery.service-name
一定要加,不然会抛出异常Caused by: java.lang.IllegalArgumentException: Consul service ids must not be empty, must start with a letter, end with a letter or digit, and have as interior characters only letters, digits
-- 参考:https://www.jianshu.com/p/83d3a8105620
定义启动类
ProServiceApplication.java
package com.github.springtools.proservice;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@EnableDiscoveryClient
@SpringBootApplication
public class ProServiceApplication {@GetMapping("/")
public String hello() {
return "Hello world";
}public static void main(String[] args) {
SpringApplication.run(ProServiceApplication.class, args);
}}
启动
文章图片
启动完成
打开Consul Web 控制台 http://localhost:8500
文章图片
发现已经注册上去
好了,今天就先写到这里了
源代码地址 https://github.com/Gleans/SpringCloudPro
ps:写着写着又凌晨一点了,头发又少了,一天天儿~的过得也太快了,淦
文章图片
公众号
推荐阅读
- parallels|parallels desktop 解决网络初始化失败问题
- 那件我们忽略的小事叫感恩
- 有父母作榜样的家才是真正的学区房
- 老了的父母
- 父母越不讲道理,孩子反而越优秀!说的是你吗()
- 孩子不是实现父母欲望的工具——林哈夫
- 《老婆》
- 我的小叔
- 陷入父母的心理战,孩子被彻底打败
- 焦点父母课堂洛阳中期班|焦点父母课堂洛阳中期班 第125分享 汪丽