4 行代码接入 Spring —— ionet 的生态融合之道
"纯 JavaSE"不是限制,而是自由
ionet 是纯 JavaSE 实现的。这意味着它不强制绑定任何框架——不依赖 Spring,也不排斥 Spring。
这让 ionet 拥有了一种独特的定位:它可以与你已有的任何框架融合。
与 Spring 集成
Spring 是 Java 生态中最重要的框架,大多数团队的基础设施都建立在 Spring 之上。ionet 与 Spring 的集成非常简单——只需要在启动时将 Spring 的 ApplicationContext 注入即可。
集成后你可以:
- 在 Action 中使用
@Autowired注入的 Spring Bean - 使用 Spring 的事务管理
- 使用 Spring Data 访问数据库
- 使用 Spring 的 AOP、定时任务等所有能力
EventBus 与 Spring 的结合
如果你的订阅者类是由 Spring 管理的,可以从 ApplicationContext 中获取实例后注册到 EventBus:
builder.addRunner((EventBusRunner) (eventBus, _) -> {
// 从 Spring 容器中获取订阅者
var subscriber = applicationContext.getBean(EmailEventBusSubscriber.class);
eventBus.register(subscriber);
});
这样,你的事件订阅者就可以注入 Spring 的 Service、Repository 等 Bean 了。
不止 Spring
ionet 的生态融合能力不限于 Spring。因为它是纯 JavaSE 的,所以可以与任何框架共存:
| 框架 | 融合方式 | 获得的能力 |
|---|---|---|
| Spring | ApplicationContext 注入 | DI、AOP、事务、Spring Data |
| Vert.x | 共存 | 响应式编程、事件循环 |
| Quarkus | 共存 | 原生编译、快速启动 |
| Solon | 共存 | 轻量级 DI |
你可以把 ionet 看作一个"网络通信引擎",它负责消息传输和业务路由,而 Spring/Vert.x/Quarkus 负责业务支撑(数据库、缓存、任务调度等)。
TCP / WebSocket / UDP —— 一套代码
再次强调 ionet 的一个核心能力:一套业务代码,同时支持多种连接方式。
@ActionController(1)
public class HallAction {
@ActionMethod(0)
private UserMessage login(LoginMessage message) {
// 这段代码同时支持 TCP / WebSocket / UDP
return new UserMessage("Hello");
}
}
- Godot/Unity 端游客户端 → TCP
- React/Vue Web 客户端 → WebSocket
- IoT 传感器设备 → UDP
同一个 Action,同时服务所有连接方式。未来支持 KCP、QUIC 时,代码也不需要改。
JDK25 + 分代 ZGC
ionet 最低要求 JDK25。这不仅是一个版本号,更是一个性能保障:
分代 ZGC 的红利
- 亚毫秒级暂停时间 → 游戏不卡顿
- 自动内存管理 → 不需要 JVM 调优专家
- 稳定的延迟表现 → P99 延迟可控
现代 Java 语法
JDK25 带来的语法改进(模式匹配、Record、密封类、虚拟线程等)让你的业务代码更简洁。配合 ionet 的 Action 模型,代码可读性极高。
小结
ionet 的生态策略是:做好网络通信这一件事,其他的交给专业的框架。
- 需要 ORM?接入 Spring Data
- 需要缓存?接入 Spring Cache / Redis
- 需要定时任务?接入 Spring Scheduler
- 需要响应式?接入 Vert.x
ionet 不与这些框架竞争,而是与它们互补。你获得了 ionet 的纳秒级网络通信能力,同时保留了原有框架的全部生态。
更多资源
- 📖 与 Spring 集成
- 📖 你的生态
下一篇预告:[从单体到分布式 —— ionet 的部署方案与动态扩缩容]
浙公网安备 33010602011771号