SpringCloud Finchley+Spring Boot 2.0 集成Consul的方法示例(1.2版本)
作者:张书康 时间:2023-09-02 13:07:36
概述:
Spring Boot 2.0相对于之前的版本,变化还是很大的。首先对jdk的版本要求已经不能低于1.8,其次依赖的spring的版本也是最新版本5.0,并集成了功能强大的webflux等。
SpringCloud Finchley 版本的升级也带来了全新组件:Spring Cloud Function 和 Spring Cloud Gateway ,前者致力于函数式编程模块的整合,后者则是网关netflix zuul 的替换组件。
1)需要的依赖:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.iyb</groupId>
<artifactId>saturn</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>sc-saturn</name>
<description>sc-saturn for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.1.RELEASE</version>
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<mapper.version>3.4.0</mapper.version>
<pagehelper.version>4.1.6</pagehelper.version>
<fastjson.version>1.2.13</fastjson.version>
<jackson.version>2.8.5</jackson.version>
<druid.version>1.0.27</druid.version>
<mysql.version>5.1.40</mysql.version>
<commons-fileupload.version>1.3.1</commons-fileupload.version>
</properties>
<dependencies>
<!--starter begin-->
<!--spring cloud starter-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-zuul</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>
<!--tomcat starter-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>compile</scope>
</dependency>
<!--actuator starter-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!--spring boot starter-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<!--spring starter-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--fastjon-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>${fastjson.version}</version>
</dependency>
<dependency>
<groupId>io.github.openfeign</groupId>
<artifactId>feign-gson</artifactId>
<version>9.3.1</version>
</dependency>
<!--lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
</dependency>
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.4</version>
</dependency>
<dependency>
<groupId>com.netflix.feign</groupId>
<artifactId>feign-gson</artifactId>
<version>8.15.1</version>
</dependency>
</dependencies>
// Spring Cloud Finchley.RELEASE
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Finchley.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
</project>
需要注意的地方:
部分依赖做了改变:
旧版本 | Finchley 版本 |
---|---|
spring-cloud-starter-eureka-client | spring-cloud-starter-netflix-eureka-client |
spring-cloud-starter-eureka-server | spring-cloud-starter-netflix-eureka-server |
spring-cloud-starter-hystrix | spring-cloud-starter-netflix-hystrix |
spring-cloud-starter-hystrix-dashboard | spring-cloud-starter-netflix-hystrix-dashboard |
spring-cloud-starter-ribbon | spring-cloud-starter-netflix-ribbon |
spring-cloud-starter-turbine | spring-cloud-starter-netflix-turbine |
spring-cloud-starter-zuul | spring-cloud-starter-netflix-zuul |
spring-cloud-starter-feign | spring-cloud-starter-openfeign |
新版本的 SpringCloud 上面的依赖都发生了变化,依赖中都引入了 netflix,或许是为了声明吧(组件的实现底层并非spring)。
log4j依赖:
在spring cloud之前的版本中,日志只需要引入lombok即可,但是Finchley版本需要单独的引用。
<!--lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
2)集成consul配置文件:
spring:
application:
name: sc-saturn
profiles:
active: dev
cloud:
config:
# uri: http://localhost:9999
discovery:
enabled: false
serviceId: sc-earth-config-server
label: master
profile: pre
consul:
host: http://localhost:8500
port: 80
discovery:
prefer-ip-address: true
#这里是重写健康检查的endPoint,默认为 /health,重写是为了节省不必要的网络传输,只需要http 200状态码即可
health-check-path: /ok/health
heartbeat:
enabled: false
3)启动类:
@SpringBootApplication
@EnableFeignClients
@EnableZuulServer
@ComponentScan(basePackages={"com.iyb.ak"})
@EnableDiscoveryClient
@Slf4j
public class SaturnApplication implements CommandLineRunner{
public static void main(String[] args) {
SpringApplication.run(SaturnApplication.class, args);
}
@Override
public void run(String... args) throws Exception {
log.info(">>>>>>>>>>>>>>> sc-saturn 启动完成<<<<<<<<<<<<<");
}
}
4)示例:
注册中心:
可以看到 sc-saturn 已经成功注册到 consul中了。另外,上面的consul ui界面发生了变化,这是1.2版本做出的优化,相较以前的ui界面,已经好看很多了。
来源:https://blog.csdn.net/woshilijiuyi/article/details/80969407
标签:Spring,Boot,集成,Consul
0
投稿
猜你喜欢
java 中sendredirect()和forward()方法的区别
2021-11-07 18:39:28
Android Compose实现联系人列表流程
2023-09-25 00:50:04
Spring Boot 利用 XML 方式整合 MyBatis
2023-02-09 23:01:18
使用 Java8 实现观察者模式的方法(下)
2021-08-03 04:21:37
使用 BenchmarkDotNet 对 C# 代码进行基准测试
2023-06-25 00:38:49
.NET C#利用ZXing生成、识别二维码/条形码
2022-03-25 12:20:45
浅谈C#中的委托、事件与异步
2022-04-25 23:05:34
关于IDEA配置文件字符集的问题
2022-11-01 13:06:44
Android 7.0应用之间如何共享文件
2021-09-18 08:43:15
Android实现读写USB串口数据
2023-10-21 19:12:56
Android 后台发送邮件示例 (收集应用异常信息+Demo代码)
2022-06-24 16:31:06
两种java实现二分查找的方式
2023-09-04 05:25:00
分享Java常用几种加密算法(四种)
2022-05-14 17:59:19
Android中实现根据资源名获取资源ID
2023-06-20 04:18:30
linux操作系统安装MONO执行C#程序的详解步骤
2022-10-04 18:20:04
c# RSA非对称加解密及XML&PEM格式互换方案
2022-07-10 12:19:31
深入委托与多播委托的详解
2023-05-29 07:07:15
Java实现简单的扫雷小程序
2022-11-18 02:14:07
C# List 并发丢数据问题原因及解决方案
2023-06-18 17:53:54
新版Android Studio3.6找不到R.java怎么处理
2023-11-28 14:04:03