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-clientspring-cloud-starter-netflix-eureka-client
spring-cloud-starter-eureka-serverspring-cloud-starter-netflix-eureka-server
spring-cloud-starter-hystrixspring-cloud-starter-netflix-hystrix
spring-cloud-starter-hystrix-dashboardspring-cloud-starter-netflix-hystrix-dashboard
spring-cloud-starter-ribbonspring-cloud-starter-netflix-ribbon
spring-cloud-starter-turbinespring-cloud-starter-netflix-turbine
spring-cloud-starter-zuulspring-cloud-starter-netflix-zuul
spring-cloud-starter-feignspring-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)示例:

SpringCloud Finchley+Spring Boot 2.0 集成Consul的方法示例(1.2版本)

注册中心:

SpringCloud Finchley+Spring Boot 2.0 集成Consul的方法示例(1.2版本) 

可以看到 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
  • asp之家 软件编程 m.aspxhome.com