Springcloud Alibaba + jdk17+nacos 项目实践

简介: 本文基于 `Springcloud Alibaba + JDK17 + Nacos2.x` 介绍了一个微服务项目的搭建过程,包括项目依赖、配置文件、开发实践中的新特性(如文本块、NPE增强、模式匹配)以及常见的问题和解决方案。通过本文,读者可以了解如何高效地搭建和开发微服务项目,并解决一些常见的开发难题。项目代码已上传至 Gitee,欢迎交流学习。

1 前言

前文中已经分享了 springboot3.0 升级实践,在本文中将继续以此为基础介绍一个微服务的项目架构如何搭建以及一些新的知识点。技术的迭代日新月异,需要随时保持学习的心态和最新的技术知识储备。在本文中将以Springcloud Alibaba + jdk17 + Nacos2.x 为基础创建微服务项目,在这个创建和开发过程中会遇到新的问题,会总结一些开发的实践经验分享给大家。

2 项目搭建

在前文springboot 3.0项目升级实践 已经列举了项目所需要的依赖和环境,在这里就不再详述,在项目搭建时,可以使用阿里云的项目生成链接来生成项目,简便快捷的生成项目所需要的基本依赖。

makefile

代码解读

复制代码

# 生成项目
https://start.aliyun.com/

# 这里介绍一下项目依赖所使用的版本
-- springboot 和 spring-cloud-alibaba 对应的版本
spring-boot-dependencies:3.0.2
spring-cloud-alibaba-dependencies:2022.0.0.0-RC2
-- 项目文档 swagger 
springdoc-openapi-starter-webmvc-ui:2.2.0
spring-boot-starter-validation:3.0.2
mybatis-plus-boot-starter:3.5.6
-- 需要添加nacos和loadbalancer以及openfeign
spring-cloud-starter-alibaba-nacos-discovery:2022.0.0.0-RC2
spring-cloud-starter-loadbalancer:4.0.5
spring-cloud-starter-openfeign:4.1.0
mysql-connector-java:8.0.32
hutool-all:5.8.28

项目的配置文件如下图所示,使用 application.yml(properties) 均可,但是不能使用 bootstrap 配置文件。在 nacos 的高版本中,已经采用的 grpc 的通信模式,所以要采用客户端和服务端一致的版本才能保证项目成功启动。

微服务项目与单体的 springboot 项目配置的大体相同,只是添加了服务的自动注册,以及发现其他服务的进行远程调用。

在项目开发过程中,最大的改变就是 jdk17 的变化,包路径的变化以及一些新的语法糖,使得开发者更加专注于业务开发,更好的完成编程实践。

3 项目实践

在项目开发中有以下特性,在开发和调试过程中都很方便:

文本块 Text Blocks

自 jdk15 以及之后,引入了文本块,这是一种定义多行字符串的解决方案,在 python 中也有文本块,用法都是以 """ 开头或者结尾即可,这样的方式简化了多行字符串的实现方式,对于 sql,json,html 提高了可读性,具体的使用如下所示:

NPE,空指针增强

空指针异常在开发和调试过程中非常常见,但是输出的异常堆栈信息无法确定是哪个对象出现了问题,在 jdk17 之后,出现空指针问题就可以定位到问题的源头,如下所示即具体到相应的对象和字段。对于发现和解决问题提供了很大的帮助,

模式匹配

在传统的Java版本中,我们通常使用instanceof结合类型转换来对对象进行类型判断和处理,而这往往导致代码冗长。在JDK17中,引入了模式匹配用来增强 instanceof 表达式的功能。使用了更简洁、高效的语法,在类型检查和类型转换的场景下使用更加方便。

如下图所示,我们可以使用模式变量一次性完成类型检查和类型转换。

4 踩坑集

在项目开发过程中,也遇到了下列的问题:

InaccessibleObjectException

jdk17 中使用 BeanCopier 进行对象 copy 时,会报如下错误,目前在项目中添加参数不能解决这个问题,在复制对象时,可以使用 json 序列化与反序列化的方式或者使用 BeanUtils (apache spring工具类均可)来解决。

IllegalArgumentException

定义 Feign 接口时,如下图所示,在新版本的 SpringCloud 中增加了契约验证,在接口上@RequestMapping@FeignClient 不能同时存在,所以需要将接口路径放置在每个接口类上的方法,才能保证项目启动不报错。

java

代码解读

复制代码

IllegalArgumentException: @RequestMapping annotation not allowed on @FeignClient interfaces

5 总结

本文介绍了 Springcloud Alibaba + jdk17 + nacos 的项目搭建实践,在这个过程中介绍了项目搭建的注意事项,同时也介绍了一下新的内容和项目启动遇到的坑,希望对大家有借鉴和参考意义。本文中所涉及的代码已经上传至 gitee, 欢迎交流学习。项目地址 fortunecloud


转载来源:https://juejin.cn/post/7393606971893841972

相关文章
|
2月前
|
Cloud Native Java Nacos
微服务时代的新宠儿!Spring Cloud Nacos实战指南,带你玩转服务发现与配置管理,拥抱云原生潮流!
【8月更文挑战第29天】Spring Cloud Nacos作为微服务架构中的新兴之星,凭借其轻量、高效的特点,迅速成为服务发现、配置管理和治理的首选方案。Nacos(命名和配置服务)由阿里巴巴开源,为云原生应用提供了动态服务发现及配置管理等功能,简化了服务间的调用与依赖管理。本文将指导你通过五个步骤在Spring Boot项目中集成Nacos,实现服务注册、发现及配置动态管理,从而轻松搭建出高效的微服务环境。
174 0
|
9天前
|
缓存 Java Maven
java: 警告: 源发行版 11 需要目标发行版 11 无效的目标发行版: 11 jdk版本不符,项目jdk版本为其他版本
如何解决Java项目中因JDK版本不匹配导致的编译错误,包括修改`pom.xml`文件、调整项目结构、设置Maven和JDK版本,以及清理缓存和重启IDEA。
22 1
java: 警告: 源发行版 11 需要目标发行版 11 无效的目标发行版: 11 jdk版本不符,项目jdk版本为其他版本
|
1月前
|
负载均衡 Java Nacos
SpringCloud基础2——Nacos配置、Feign、Gateway
nacos配置管理、Feign远程调用、Gateway服务网关
SpringCloud基础2——Nacos配置、Feign、Gateway
|
4天前
|
负载均衡 算法 Nacos
SpringCloud 微服务nacos和eureka
SpringCloud 微服务nacos和eureka
16 0
|
2月前
|
Cloud Native Java Nacos
Spring Cloud Config、Apollo、Nacos和Archaius对比
这篇文章对比了Spring Cloud Config、Apollo、Nacos和Archaius这四种配置中心的适应场景、优缺点。文中讨论了它们的功能特点,例如Spring Cloud Config的集中化配置管理和动态刷新能力,Apollo的实时配置推送和权限治理,Nacos的服务发现和管理功能,以及Archaius的动态配置更新能力。文章指出选择配置中心应根据项目需求和架构来决定,并提供了一个对比图来帮助读者更直观地理解这些工具的差异。
45 1
Spring Cloud Config、Apollo、Nacos和Archaius对比
|
1月前
|
负载均衡 Java Nacos
SpringCloud基础1——远程调用、Eureka,Nacos注册中心、Ribbon负载均衡
微服务介绍、SpringCloud、服务拆分和远程调用、Eureka注册中心、Ribbon负载均衡、Nacos注册中心
SpringCloud基础1——远程调用、Eureka,Nacos注册中心、Ribbon负载均衡
|
1月前
|
Java
安装JDK18没有JRE环境的解决办法
安装JDK18没有JRE环境的解决办法
158 3
|
2月前
|
Java 关系型数据库 MySQL
"解锁Java Web传奇之旅:从JDK1.8到Tomcat,再到MariaDB,一场跨越数据库的冒险安装盛宴,挑战你的技术极限!"
【8月更文挑战第19天】在Linux上搭建Java Web应用环境,需安装JDK 1.8、Tomcat及MariaDB。本指南详述了使用apt-get安装OpenJDK 1.8的方法,并验证其版本。接着下载与解压Tomcat至`/usr/local/`目录,并启动服务。最后,通过apt-get安装MariaDB,设置基本安全配置。完成这些步骤后,即可验证各组件的状态,为部署Java Web应用打下基础。
46 1
|
2月前
|
Oracle Java 关系型数据库
Mac安装JDK1.8
Mac安装JDK1.8
463 4
|
9天前
|
Oracle Java 关系型数据库
jdk17安装全方位手把手安装教程 / 已有jdk8了,安装JDK17后如何配置环境变量 / 多个不同版本的JDK,如何配置环境变量?
本文提供了详细的JDK 17安装教程,包括下载、安装、配置环境变量的步骤,并解释了在已有其他版本JDK的情况下如何管理多个JDK环境。
22 0