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

相关文章
|
4月前
|
人工智能 Java Nacos
基于 Spring AI Alibaba + Nacos 的分布式 Multi-Agent 构建指南
本文将针对 Spring AI Alibaba + Nacos 的分布式多智能体构建方案展开介绍,同时结合 Demo 说明快速开发方法与实际效果。
3475 75
|
5月前
|
应用服务中间件 Nacos nginx
黑马头条_SpringCloud项目阶段一:环境搭建(Mac版本)
本文为 Mac 用户介绍微服务项目环境搭建,含阿里云服务器用 Docker 装 Nacos 1.2.0,本地通过 brew 装 OpenJDK 8、Maven 3.6.1、Redis,Docker 部署 MySQL 5.7 并配字符集,及 Nginx 安装与反向代理设置,附命令与配置步骤。
340 4
黑马头条_SpringCloud项目阶段一:环境搭建(Mac版本)
|
10月前
|
Java 开发者 微服务
Spring Cloud OpenFeign详解与实践
总结起来说,Spring Cloud OpenFeign提供了一种简单易懂且高效的方式去实现微服务之间通信.它隐藏了许多复杂性,并且允许开发者以声明式方式编写HTTP客户端代码.如果你正在开发基于Spring Cloud 的微服务架构系统,Spring Cloud Open Feign是一个非常好用且强大工具.
716 33
|
JSON Java Nacos
SpringCloud 应用 Nacos 配置中心注解
在 Spring Cloud 应用中可以非常低成本地集成 Nacos 实现配置动态刷新,在应用程序代码中通过 Spring 官方的注解 @Value 和 @ConfigurationProperties,引用 Spring enviroment 上下文中的属性值,这种用法的最大优点是无代码层面侵入性,但也存在诸多限制,为了解决问题,提升应用接入 Nacos 配置中心的易用性,Spring Cloud Alibaba 发布一套全新的 Nacos 配置中心的注解。
1462 138
|
存储 Java Nacos
Spring Cloud+Nacos+KMS 动态配置最佳实践
本文讲述了 Spring Cloud 应用中结合 Nacos 实现了运行期配置动态更新的功能,以及在此基础上结合 KMS 在不改动代码的情况下对应用使用的敏感配置进行保护,解决将配置迁移到 Nacos 中可能存在的数据安全顾虑,并对其底层工作原理做了简单介绍。
1570 148
|
12月前
|
Cloud Native Java Nacos
springcloud/springboot集成NACOS 做注册和配置中心以及nacos源码分析
通过本文,我们详细介绍了如何在 Spring Cloud 和 Spring Boot 中集成 Nacos 进行服务注册和配置管理,并对 Nacos 的源码进行了初步分析。Nacos 作为一个强大的服务注册和配置管理平台,为微服务架构提供
4591 14
|
12月前
|
前端开发 Java Nacos
🛡️Spring Boot 3 整合 Spring Cloud Gateway 工程实践
本文介绍了如何使用Spring Cloud Alibaba 2023.0.0.0技术栈构建微服务网关,以应对微服务架构中流量治理与安全管控的复杂性。通过一个包含鉴权服务、文件服务和主服务的项目,详细讲解了网关的整合与功能开发。首先,通过统一路由配置,将所有请求集中到网关进行管理;其次,实现了限流防刷功能,防止恶意刷接口;最后,添加了登录鉴权机制,确保用户身份验证。整个过程结合Nacos注册中心,确保服务注册与配置管理的高效性。通过这些实践,帮助开发者更好地理解和应用微服务网关。
2093 0
🛡️Spring Boot 3 整合 Spring Cloud Gateway 工程实践
|
搜索推荐 NoSQL Java
微服务架构设计与实践:用Spring Cloud实现抖音的推荐系统
本文基于Spring Cloud实现了一个简化的抖音推荐系统,涵盖用户行为管理、视频资源管理、个性化推荐和实时数据处理四大核心功能。通过Eureka进行服务注册与发现,使用Feign实现服务间调用,并借助Redis缓存用户画像,Kafka传递用户行为数据。文章详细介绍了项目搭建、服务创建及配置过程,包括用户服务、视频服务、推荐服务和数据处理服务的开发步骤。最后,通过业务测试验证了系统的功能,并引入Resilience4j实现服务降级,确保系统在部分服务故障时仍能正常运行。此示例旨在帮助读者理解微服务架构的设计思路与实践方法。
804 17

热门文章

最新文章