Spring Boot 4.0 API版本控制

Spring Boot 4.0.0 新特性详解:深入解读 Spring Framework 7.0.0 API 版本控制:通过实现优雅的端点版本管理:支持灵活的编程式 Bean 注册空值安全:采用 JSpecify 注解构建更健壮的代码HTTP 代理:使用简化服务集成技术栈现代化:全面支持 Jackson 3.x、Servlet 6.1、WebSocket 2.2 和 GraalVM 原生镜像Spring Boot 3.4中文文档Spring Boot 3.5中文文档Spring AI 1.0.0中文文档这些变化让 Spring Boot 4.0.0 成为构建现代云原生应用的强大选择。 阅读详情

在Spring Boot 4.0中新增了一个API版本控制的特性,它有以下几种选项可用:

  • 请求头(Request header)
  • 请求参数(Request parameter)
  • 路径段(Path segment)
  • 媒体类型参数(Media type parameter)
  • 自定义

下面我们来逐一介绍。

我们先创建一个Spring Boot 4.0的工程,可以从https://start.spring.io/这个官方网站上快速创建一个Java Web的工程,Spring Boot的版本选择4.0.0,也顺便添加Spring Web依赖,点击GENERATE就可以将创建的工程下载了。

请求头

使用请求头来控制API版本就是要在header中设置版本参数,比如在header中使用API-Version参数来控制版本。

先实现Controller中的代码,也就是在这里标明不同版本的API,用version字段来设置。

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/api/hello")
public class VersionTestController {

    @GetMapping(version = "1.0")
    public String version1() {
        return "hello, v1";
    }

    @GetMapping(version = "2.0")
    public String version2() {
        return "hello, v2";
    }

}

写完这个VersionTestController类就可以直接运行项目了,当然启动的时候你会看到如下的错误提示:

Caused by: java.lang.IllegalStateException: API version specified, but no ApiVersionStrategy configured
	at org.springframework.util.Assert.state(Assert.java:80) ~[spring-core-7.0.1.jar:7.0.1]
	at org.springframework.web.servlet.mvc.method.RequestMappingInfo$DefaultBuilder.build(RequestMappingInfo.java:773) ~[spring-webmvc-7.0.1.jar:7.0.1]
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping.createRequestMappingInfo(RequestMappingHandlerMapping.java:385) ~[spring-webmvc-7.0.1.jar:7.0.1]
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping.createRequestMappingInfo(RequestMappingHandlerMapping.java:289) ~[spring-webmvc-7.0.1.jar:7.0.1]
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping.getMappingForMethod(RequestMappingHandlerMapping.java:207) ~[spring-webmvc-7.0.1.jar:7.0.1]
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping.getMappingForMethod(RequestMappingHandlerMapping.java:80) ~[spring-webmvc-7.0.1.jar:7.0.1]
	at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.lambda$detectHandlerMethods$0(AbstractHandlerMethodMapping.java:279) ~[spring-webmvc-7.0.1.jar:7.0.1]
	... 28 common frames omitted

这是在告诉我们API版本控制需要配置策略,那我们就需要实现WebMvcConfigurer接口来配置策略,代码如下:

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ApiVersionConfigurer;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
    @Override
    public void configureApiVersioning(ApiVersionConfigurer configurer) {
        configurer.useRequestHeader("API-Version");
    }
}

增加了这个配置之后,我们再次启动项目,就能发现错误消失了,一切正常。然后可以找一个接口测试工具,比如Postman、Apifox等。
我们访问/api/hello这个接口,并在header中添加API-Version:1.0或者API-Version:2.0来测试,你会发现设置不同的版本会得到不同的返回结果。

当然,如果你不喜欢直接用代码实现WebMvcConfigurer接口来配置策略,也可以通过在application.yml中进行配置,如下:

spring:
  mvc:
    apiversion:
      default: 2.0
      use:
        header: API-Version

default:2.0是表示如果你在请求接口时,不在header中配置API版本控制参数,默认返回2.0版本的接口。

请求参数

使用请求参数来控制API版本,就是类似这样的访问:/api/hello?version=1.0。其他的内容我们不需要动,只需要实现WebMvcConfigurer接口的策略修改为useQueryParam即可,代码如下:

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ApiVersionConfigurer;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
    @Override
    public void configureApiVersioning(ApiVersionConfigurer configurer) {
        configurer.useQueryParam("version");
    }
}

其实就只修改了一行代码,即:configurer.useQueryParam(“version”)。
也可以选择在application.yml中进行配置,如下:

spring:
  mvc:
    apiversion:
      default: 2.0
      use:
        query-parameter: version

路径段

使用路径段来控制API版本,就是在URI中控制,类似这样:/api/v1/hello,我们需要首先调整一下Controller类的部分,代码如下:

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/api")
public class VersionTestController2 {

    @GetMapping(path = "{version}/hello", version = "v1")
    public String version1() {
        return "hello, v1";
    }

    @GetMapping(path = "{version}/hello", version = "v2")
    public String version2() {
        return "hello, v2";
    }

}

我们用占位符{version}来标明版本号的位置,依旧用version来配置版本,同样API策略也有需要进行修改,代码如下:

import org.springframework.context.annotation.Configuration;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.method.HandlerTypePredicate;
import org.springframework.web.servlet.config.annotation.ApiVersionConfigurer;
import org.springframework.web.servlet.config.annotation.PathMatchConfigurer;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
    @Override
    public void configureApiVersioning(ApiVersionConfigurer configurer) {
        configurer.usePathSegment(1);
    }
}

路径段控制API版本策略需要这么一行代码:configurer.usePathSegment(1)。usePathSegment()函数的参数是一个int类型,它指的是路径段的索引,像我们示例的路径段是/api/v1/hello,那么将这个路径段分割之后是这样的[api,v1,hello],版本所在位置的索引就是1,所以这里设置为1。

使用application.yml进行配置,如下:

spring:
  mvc:
    apiversion:
      default: 2.0
      use:
        path-segment: 1

媒体类型参数

使用媒体类型参数控制API的版本核心在于使用HTTP的Accept请求头。比如我们在header中添加一个这样的Accept,Accept:application/json;version=1.0。首先我们看一下Controller的代码,如下:

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/api")
public class VersionTestController3 {

    @GetMapping(path = "hello", version = "1.0")
    public String version1() {
        return "hello, v1";
    }

    @GetMapping(path = "hello", version = "2.0")
    public String version2() {
        return "hello, v2";
    }

}

配置一下API的策略,代码如下:

import org.springframework.context.annotation.Configuration;
import org.springframework.http.MediaType;
import org.springframework.web.servlet.config.annotation.ApiVersionConfigurer;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class WebMvcConfig implements WebMvcConfigurer {

    @Override
    public void configureApiVersioning(ApiVersionConfigurer configurer) {
        configurer.useMediaTypeParameter(MediaType.APPLICATION_JSON, "version");
    }
}

或者在application.yml中进行配置,如下:

spring:
  mvc:
    apiversion:
      use:
        media-type-parameter:
          '[application/json]': version

自定义

自定义控制API版本的核心是实现ApiVersionResolver,根据实际需要编写resolveVersion函数即可。API策略代码如下:

import jakarta.servlet.http.HttpServletRequest;
import org.jspecify.annotations.Nullable;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.accept.ApiVersionResolver;
import org.springframework.web.servlet.config.annotation.ApiVersionConfigurer;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class WebMvcConfig implements WebMvcConfigurer {

    @Override
    public void configureApiVersioning(ApiVersionConfigurer configurer) {
        configurer.useVersionResolver(new ApiVersionResolver() {
            @Override
            public @Nullable String resolveVersion(HttpServletRequest request) {
                return "";
            }
        });
    }
}

参考

  1. https://docs.spring.io/spring-framework/reference/web/webmvc/mvc-config/api-version.html
  2. https://docs.spring.io/spring-framework/reference/web/webmvc/mvc-controller/ann-requestmapping.html#mvc-ann-requestmapping-version
  3. https://docs.spring.io/spring-boot/reference/web/servlet.html#web.servlet.spring-mvc.api-versioning

未来编程实验室

Spring Boot 4.0 实战技巧全解析 Spring Boot 4.0 的核心是“升级、优化、适配”,并非简单的版本迭代,而是围绕云原生、高性能、开发效率的全面重构,其与Java 21/25的深度融合,彻底打破了Java“笨重、启动慢、并发差”的刻板印象,成为2026年后端开发的主流组合。环境配置:JDK17+(推荐21/25)、Maven 3.8.8+、Tomcat 11.0+,适配Jakarta EE 11,完成javax.*到jakarta.*的包名迁移; 阅读详情

相关推荐

一文读懂资管系统里的“清算路径”:钱和券的“导航地图”

简单来说,清算路径就是给每一笔交易预设好的“导航路线”。钱从哪个银行账户出?通过哪家证券公司去买?用哪个股东账户去登记?买回来的股票记在谁的名下?“清算路径”就是把这一连串问题的答案提前配置好。它连接了银行托管户(钱的源头)、券商(交易的中介)和交易所(买卖的市场)。没有配好这条路,交易就无法闭环。清算路径是金融基础设施的缩影。资金如何安全地从银行流向市场;资产如何合法地归属到产品名下;交易数据如何在不同系统间流转。它是资管系统能够日复一日、准确无误地处理亿万级交易的基石。

m0_37607945的博客 235

API version specified, but no ApiVersionStrategy configured

没有配置版本策略时,启动报错.

nextera的博客 1248

Simulink小白必看:用Simscape轻松搭建二阶倒立摆模型(附完整参数配置)

本文为Simulink初学者提供了使用Simscape Multibody模块库,从零开始搭建二阶倒立摆非线性物理模型的完整实战教程。文章详细讲解了如何通过物理组件(如刚体、关节)直观建模,替代复杂的数学推导,并涵盖参数配置、仿真调试及模型线性化方法,帮助读者快速掌握这一高效的物理建模路径。

grpc6streamer的博客 1045

SpringBoot中6种API版本控制策略

通过自定义注解和拦截器/过滤器实现更灵活的版本控制。以上6种API版本控制方式各有优劣,选择时应考虑以下因素项目规模和团队情况:小型项目可选择简单的URL路径版本控制,大型项目可考虑自定义注解或面向接口的方式客户端类型:面向浏览器的API可能更适合URL路径或查询参数版本控制,而面向移动应用或其他服务的API可考虑HTTP头或媒体类型版本控制版本演进策略:是否需要向后兼容,版本更新频率如何API网关与文档:考虑版本控制方式是否便于API网关路由和文档生成最后,版本控制只是手段,不是目的。

风象南的专栏 1891

小白投资理财 - 解读威廉分形指标 Williams Fractals

威廉分形指标用于识别价格趋势中的关键点,帮助判断支撑位和阻力位。

wumingxiaoyao的博客 4336

软考高级系统架构设计师历年论文真题深度分析(2011-2025)

本文系统分析了2011-2025年系统架构设计师论文真题,归纳出十大主题类别,包括架构风格、企业集成、数据技术、非功能属性等。研究发现新兴技术占比最高(18.8%),企业集成、数据架构和非功能属性为三大核心考点。论文命题呈现明显技术演进特征,从经典架构理论逐步转向云原生、AI融合等前沿方向。备考建议重点关注高频考点和技术前沿,同时强化场景化解决方案能力。分析表明,架构师考试持续跟踪行业技术发展,注重理论与实践结合,为考生提供了明确的备考方向。

一几文的编程学习笔记。 2033

选择ChatGPT4.0API应该注意些什么?以及如何保障稳定性?

比如100刀,别人一天用了90刀,你用了10刀,反而你承担了100刀的费用。3,直连还是转发,直连就是接官方的KEY,转发就是接第三方技术生成的KEY,虽然官方查不到,但是可以使用。掌握了这四点,基本上就了解了ChatGPT4.0的API啦,买的时候可以做为基点,起码被骗了,自己能知道!最近推出了4.0的API,国内出现了大批的ChatGPT镜像网站,这个时候这些平台最需要的就是API。1,转速,4.0API有10000和40000转速的区别,数值越大,请求速度越快,这个要问清楚。

sxhttx的博客 1537

【ESP 保姆级教程】玩转emqx数据集成篇④ ——数据桥接之HTTP服务

主要是学习数据桥接功能以及构建自己的http服务器,这是一个非常有用的功能。包括各种传感器上报基本上都需要数据桥接功能支持,所以还是希望认真学习这一块开发,然后结合数据库存储等等知识点进行进一步学习。

单片机菜鸟哥的博客 1306

Spring Boot - 实用功能04 - 提供多版本控制

提供多版本控制

qq_43350524的博客 881

详解Linux下使用vscode编译运行和调试C/C++

本教程将具体详解使用Visual Studio Code在Linux环境下使用C/C++方法。 GCC C++ 编译器 (g++) 和 GDB 调试器的方法。 GCC是GNU 编译器集合; GDB 是 GNU 调试器。 1.先决条件 安装Visual Studio Code. 安装C++拓展插件。点击在vscode界面最左侧的Extensions图标(打开快捷键:ctrl+shift+X),搜索“C/C++”,点击进行安装。 确保已安装gcc. 一般ubuntu系统会预装gcc.在终端窗口中输入如下命令

休的博客 6240

GEE 案例:基于陆地卫星8号(大气层顶反射率数据)LANDSAT/LC08/C02/T1_TOA的生态遥感指数RSEI计算、可视化和下载

摘要:基于GEE的遥感生态指数(RSEI)计算方法 本文介绍了利用Google Earth Engine(GEE)平台计算遥感生态指数(RSEI)的全流程方法。主要内容包括:研究区域定义、Landsat8数据获取与去云预处理、关键生态指标计算(地表温度LST、植被指数NDVI、湿度指数WET和建筑指数NDBSI)、主成分分析(PCA)降维处理,以及结果可视化与数据导出。通过结合多源遥感指标并采用归一化处理,构建了综合反映区域生态环境质量的RSEI指数。该方法为生态环境监测提供了高效的技术方案,所有计算过程均

此星光明博客 438

Spring Boot4正式篇:第二篇 多版本API特性

今天 [ 2025年11月21日 ] 是发布正式版本的日子,也是开始正式更新系列正式篇的开始。在以SpringBoot开发Restful接口时,由于模块,系统等业务的变化,需要对同一接口提供不同版本的参数实现(老的接口还有模块或者系统在用,不能直接改,所以需要不同版本)。如何更加优雅的实现多版本接口呢?在新版本中默认支持多版本API特性。API 版本控制的核心策略,其中包含所有与版本控制相关的配置首选项通过API 版本解析器解析请求中的版本信息>使用ApiVersionParser解析原始版本值。

lee_sine的博客 892

Android车载音频系统概览

官网有些部分的内容描述比较简单,对没有app、系统和底层开发经验,容易一眼扫过,没有留意到相关细节。 本节补充车载音频相关细节。

hwj的博客 785

Spring Boot 4.0 来袭,你准备好了吗?

Spring Boot 4.0预览版发布,内置Spring Framework 7.0,原生支持API版本控制。

qq_37220802的博客 574

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

SpringBoot4.0新特性-API版本管理基础篇

API 版本管理是后端开发中一个棘手但又无法回避的问题,尤其是在移动端开发中更为明显。现在,SpringBoot4.0 为 SpringMVC 和 WebFlux 提供了原生的 API 版本控制支持。媒体类型版本控制:通过媒体类型来指定版本策略,比如:Accept: application/json;查询参数版本控制:通过查询参数指定版本,比如/api/orders?URI版本控制:在URL路径中添加版本,比如/api/v1/orders。请求头版本控制:通过自定义请求头来指定版本。

若鱼的专栏 341

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Spring Boot 4 震撼发布!诸多特性一览!

Spring Boot 4.0-SNAPSHOT版本已发布,带来多项重大更新:要求Java 17及以上版本,集成Spring Framework 7.0;将GraalVM原生镜像支持升级为正式特性,显著提升启动速度和降低内存占用;支持JDK 21虚拟线程,优化高并发性能;新增API版本控制功能;采用声明式HTTP客户端简化远程调用。同时全面升级至Jackson 3.x,强化Null安全,并迁移至Jakarta EE 10命名空间。目前版本尚不稳定,生产环境建议继续使用3.5.0-GA版本。

有一只柴犬的专栏 2932

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Spring Boot 4.0正式发布了

Spring Boot 4.0 正式发布,带来多项重要更新。该版本升级了核心框架依赖,包括Spring Framework 7.0和Spring Data 2025.1等。主要新特性包括:HTTP服务客户端自动配置、API版本控制支持、JMS客户端改进、OpenTelemetry starter、Kotlin序列化支持以及Redis静态主/副本配置等。升级时需注意从3.5版本迁移,官方提供了详细迁移指南。此外还包含大量第三方依赖更新,如Hibernate 7.1、Jackson 3.0等。开发者可参考官方文

TechTrek的专栏 1890

Spring Boot 4 升级实战:从3.x到4.0的分步升级保姆级指南

Spring Boot 4.0是一次高性能、高安全性、高开发效率的重大升级,模块化的自动配置、原生的空安全校验、内置的API版本控制三大核心特性,不仅带来了显著的性能提升,更从框架层面规范了开发流程,提前规避生产环境的常见BUG。本次迁移的核心原则是分步升级、前置修复:先升级至3.5.x最新版,修复弃用警告,再检查并升级基础环境,最后正式升级至4.0并修复依赖、编译问题。从实际实践来看,无复杂自定义配置的服务,90分钟内可完成迁移;存在自定义自动配置/多依赖的服务,约4小时可完成,整体迁移成本可控。

weixin_44058951的博客 1893

Spring Boot 4.0 RC2发布!这 6 大升级,让 Java 开发效率飙升 300%

Spring Boot 4.0 RC2带来六大核心升级:1) 强制Java 21基线,支持虚拟线程提升并发性能;2) 原生GraalVM集成,实现毫秒级冷启动;3) 原生API版本控制,简化路由管理;4) BeanRegistrar接口支持动态Bean注册;5) 声明式HTTP客户端@HttpExchange取代Feign;6) 增强开发者工具链。这些改进显著提升开发效率,特别适合云原生、高并发和Serverless场景。实测显示吞吐量提升7倍,内存占用降低25%,是Java开发生态的重要进化。

闫小甲的专栏 1028

Spring Boot 4.0:全新特性与迁移全指南

Spring Boot 4.0是一次面向云原生时代的重要升级。虚拟线程和GraalVM原生镜像等特性为高性能、低资源消耗的应用场景提供了强大支持。作为开发者,虽然升级需要一定工作量,但新特性带来的收益是值得投入的。对于新项目,建议直接采用Spring Boot 4.0;对于现有项目,可以根据业务需求制定合理的升级时间表。特别是对于那些面临高并发挑战或需要优化资源使用的项目,升级到Spring Boot 4.0可能会带来显著的性能提升和成本优化。

yishifanghua的博客 437

Spring Boot 4.0震撼来袭,快来看看有哪些提升

Spring Boot 4.0 正式发布:云原生与开发体验全面升级 2025年11月21日,Spring Boot 4.0基于Spring Framework 7.0正式发布,支持Java 25及虚拟线程优化,标志Java Web开发进入新阶段。核心特性包括: 性能突破:GraalVM原生镜像生产级支持,冷启动时间降至50ms内,内存占用减少80%;虚拟线程支持百万级并发,异步处理性能提升7倍。 开发效率:内置API版本控制(@GetMapping(version="1"))、声明式HT

城南蝈蝈 414

SpringBoot 4.0震撼发布,多项重大升级,性能改革性飙升!!!

Java版本-->Java 17,开发人员可以使用 Java 17 的所有新特性和改进来构建自己的应用程序,如:密封类(sealed types)、记录模式(record patterns)等。Spring Boot 4.0的快照版,新增了对Spring Framework 7.0的支持,同时Spring Initializr可以创建4.0版本的项目。监控体系重构,适配虚拟线程和原生镜像场景。SpringBoot作为Java开发语言的主流架构,依托于完善的生态占据着不可或缺的地位,在全球有庞大的使用群体。

u011134780的博客 3234

Spring Boot 4.0.0 正式发布

SpringBoot 4.0.0正式发布,基于Spring Framework 7构建。新版本全面支持Java 25(兼容Java 17),采用Jakarta EE 11 API标准,并通过JSpecify增强null安全特性。主要改进包括代码库模块化、Jackson 3.0支持、REST API版本控制等功能,为开发者提供更高效的开发体验。

xixixixixixixi21的博客 726

Spring Boot 4.0 发布总结:新特性、依赖变更与升级指南

Spring Boot 4.0 发布摘要 Spring Boot 4.0 正式发布,带来重大升级:基于Java 17+和Jakarta EE 11,强制要求Servlet 6.1规范,移除Undertow支持。核心特性包括:虚拟线程并发模型显著提升性能;新增API版本控制与声明式HTTP客户端;GraalVM原生镜像实现生产级支持;模块化重构优化资源占用。版本支持策略显示3.x系列即将进入维护期,建议项目先升级至3.5.x再过渡到4.0。升级需注意Java版本、Web容器更换及Jackson 3.x适配等关

Harry的博客 3490

Spring Boot 3.5停维了,4.0迁移的五个坑你踩了没

Spring Boot 3.5.x开源支持将于2026年6月结束,用户需尽快迁移至4.0版本。Spring Boot 4.0基于Spring Framework 7,引入多项重大变更,需重点关注以下五个问题:1)虚拟线程成为默认配置,需重构线程池设计;2)模块化Starter拆分导致依赖路径变化;3)Jackson 3升级涉及包名和API调整;4)JSpecify空安全注解带来编译期严格检查;5)Spring Framework 7原生API版本控制需适配。

CalEx_Tech的博客 312

重磅!SpringBoot4发布,11项重大变更全解析!

不知道大家最近没有发现?在我们新创建 Spring Boot 项目的时候,已经有了 Spring Boot 4.0.0 预览版这个选项了,如下图所示:并且 Spring Boot 4 底层是基于全新的 Spring Framework 7.0.0 实现的,如下图所示:那么问题来了,新版本都有哪些重要的变更呢?接下来由磊哥带着大家抢先来看。

weixin_40725200的博客 113
上一篇: 阿里千问启用qianwen.com新域名,Claude Opus 4.5重磅发布
下一篇: 腾讯混元OCR模型开源,Ilya Sutskever宣布“扩展时代终结“,TRAE SOLO中国版免费上线
TechTrek
博客等级 码龄14年 15粉丝 49原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值