Skip to content

Java → Go 对照

本项目是 RuoYi-Vue-Plus(Java 版)的 Go 重写。下表是迁移中各概念的对应关系。

对照表

RuoYi (Java)本项目 (Go)
ruoyi-admin(聚合启动)cmd/<module>/main.go(每模块一进程)
Controllerinternal/<module>/handler
IXxxService / XxxServiceImplinternal/<module>/service
XxxMapper (MyBatis)internal/<module>/repository(GORM)
domain / domain.bo / domain.vomodel(entity / dto / vo)
ruoyi-common-*pkg/*
R<T> / TableDataInfopkg/response.R[T] / PageResult[T]
PageQuerypkg/repository.PageQuery
sa-token(@SaCheckPermission)pkg/middleware 鉴权中间件 + sa-token-go
@DataPermission(SpEL + 拦截器)repository 层 GORM Scopes / Callback 手写
@Log(AOP)pkg/oplog 注解 + Recorder 回调
hutool Treepkg/tree(扁平 JSON 契约自实现)
ExcelUtil(easyexcel)pkg/excel(tag 驱动导出 / 导入)
justauth(三方登录)pkg/social(自接 gitee/github/maxkey/topiam)

注解 / 中间件对照

JavaGo说明
@SaCheckPermission("system:xxx:list")satoken.CheckPermission("system:xxx:list")多个权限码是 OR,语义是「任一命中放行」
@SaCheckRole("admin")satoken.CheckRole("admin")同上
仅需登录(无权限注解)sagin.CheckLogin()
完全公开sagin.Ignore()仅在 plugin.TokenInterceptor() 组内时才需要;组外(如 /ping)公开路由无需标记
@Log(title="x", businessType=INSERT)oplog.Log("x", enum.BusinessTypeInsert)
@RepeatSubmit()repeatsubmit.RepeatSubmit(0, "")0 = 默认 5s;< 1s 注册期 panic
@RepeatSubmit(interval=10000)repeatsubmit.RepeatSubmit(10*time.Second, "")
@RateLimiter(time=60,count=10,limitType=IP)ratelimiter.RateLimiter(time.Minute, 10, ratelimiter.LimitTypeIP, 0, "")
@ApiEncryptencrypt.ApiEncrypt()
@Cacheable / @CachePut / @CacheEvictcache.Get / cache.Put / cache.Evict详见 CRUD 指南 / Service · 缓存
@DataPermissionrepository 层 GORM Scopes / Callback详见 数据权限

BusinessType 取值

BusinessType 取值即 Java ordinal()(库里存数字):

Other=0, Insert=1, Update=2, Delete=3, Grant=4, Export=5, Import=6, Force=7, GenCode=8, Clean=9

顺序不可调整、不可插入新值,只能末尾追加。(详见 pkg 参考 / enum

迁移最需要注意的两个难点

基于 MIT 协议开源