从 spring-rs 迁移到 summer-rs

Posted 2026-03-21 06:00:00 ‐ 5 min read

spring-rs 正式更名为 summer-rs。本文介绍更名的原因以及如何将现有项目从 spring-rs 迁移到 summer-rs。

为什么更名?

从 0.5.0 版本开始,spring-rs 正式更名为 summer-rs

spring-rs 最初以 Java SpringBoot 为灵感命名,但随着项目的发展,我们意识到需要一个独立的品牌标识。"summer" 既保留了与 "spring" 的季节关联,又赋予了项目自己的个性——在 Rust 生态中,summer-rs 是一个独立的、充满活力的应用框架。

更名不涉及任何架构或功能上的 breaking change,核心 API 保持不变。你只需要做一些简单的查找替换就能完成迁移。

迁移步骤

1. 更新 Cargo.toml 依赖

将所有 spring-* 依赖替换为 summer-*

 [dependencies]
-spring = "0.4"
-spring-web = "0.4"
-spring-sqlx = "0.4"
-spring-job = "0.4"
-spring-redis = "0.4"
+summer = "0.5"
+summer-web = "0.5"
+summer-sqlx = "0.5"
+summer-job = "0.5"
+summer-redis = "0.5"

完整的 crate 名称映射:

旧名称新名称
springsummer
spring-macrossummer-macros
spring-websummer-web
spring-sqlxsummer-sqlx
spring-postgressummer-postgres
spring-sea-ormsummer-sea-orm
spring-redissummer-redis
spring-mailsummer-mail
spring-jobsummer-job
spring-streamsummer-stream
spring-opentelemetrysummer-opentelemetry
spring-grpcsummer-grpc
spring-opendalsummer-opendal
spring-apalissummer-apalis
spring-sa-tokensummer-sa-token

2. 更新 Rust 源码中的 use 语句

将所有 spring 开头的 import 替换为 summer

-use spring::{auto_config, App};
-use spring_web::{get, route};
-use spring_web::{
-    error::Result, extractor::{Path, Component},
-    WebConfigurator, WebPlugin,
-};
-use spring_sqlx::{sqlx, ConnectPool, SqlxPlugin};
+use summer::{auto_config, App};
+use summer_web::{get, route};
+use summer_web::{
+    error::Result, extractor::{Path, Component},
+    WebConfigurator, WebPlugin,
+};
+use summer_sqlx::{sqlx, ConnectPool, SqlxPlugin};

注意 Rust 的 crate 名称在 use 语句中使用下划线:spring_websummer_web

3. 更新配置文件

配置文件 config/app.toml 中的 schema 地址需要更新:

-#:schema https://spring-rs.github.io/config-schema.json
+#:schema https://summer-rs.github.io/config-schema.json

配置项本身(如 [web][sqlx][redis] 等)不需要修改,它们与 crate 名称无关。

4. 快速替换命令

在项目根目录下,可以用以下命令一键完成大部分替换:

# 替换 Cargo.toml 中的依赖名
find . -name "Cargo.toml" -exec sed -i '' 's/spring-/summer-/g; s/spring =/summer =/g' {} +

# 替换 Rust 源码中的 use 语句
find . -name "*.rs" -exec sed -i '' 's/spring_/summer_/g; s/use spring/use summer/g' {} +

# 替换配置文件中的 schema 地址
find . -name "app.toml" -exec sed -i '' 's/spring-rs\.github\.io/summer-rs.github.io/g' {} +

替换完成后,运行 cargo check 确认编译通过。

迁移后的示例

迁移后的 Web 应用代码如下:

use summer::{auto_config, App};
use summer_sqlx::{
    sqlx::{self, Row},
    ConnectPool, SqlxPlugin,
};
use summer_web::{get, route};
use summer_web::{
    error::Result,
    extractor::{Component, Path},
    axum::response::IntoResponse,
    WebConfigurator, WebPlugin,
};
use anyhow::Context;

#[auto_config(WebConfigurator)]
#[tokio::main]
async fn main() {
    App::new()
        .add_plugin(SqlxPlugin)
        .add_plugin(WebPlugin)
        .run()
        .await
}

#[get("/")]
async fn hello_world() -> impl IntoResponse {
    "hello world"
}

#[route("/hello/{name}", method = "GET", method = "POST")]
async fn hello(Path(name): Path<String>) -> impl IntoResponse {
    format!("hello {name}")
}

#[get("/version")]
async fn sqlx_request_handler(Component(pool): Component<ConnectPool>) -> Result<String> {
    let version = sqlx::query("select version() as version")
        .fetch_one(&pool)
        .await
        .context("sqlx query failed")?
        .get("version");
    Ok(version)
}

可以看到,除了 use 路径从 spring 变成了 summer,其他所有代码完全一致。宏、trait、配置方式都没有变化。

IDE 支持

summer-rs 的 VSCode 扩展也已同步更新,在 VS Code Marketplace 搜索 summer-rs 即可安装。扩展提供了路由导航、组件视图、依赖图可视化等功能。

总结

这次更名是一次纯粹的品牌升级,不涉及 API 变更。迁移过程只需要全局替换 springsummer,几分钟即可完成。如果遇到任何问题,欢迎在 GitHub Issues 中反馈。