🤗 ApiHug × {Postman|Swagger|Api...} = 快↑ 准√ 省↓
- GitHub - apihug/apihug.com: All abou the Apihug
- apihug.com: 有爱,有温度,有质量,有信任
- ApiHug - API design Copilot - IntelliJ IDEs Plugin | Marketplace
更多精彩参考官方:apihug.com: 有爱,有温度,有质量,有信任 最新 release note
docs/framework/versions/0.7.8_cn.md · dearxuecom/apihug.com - Gitee.com
💁 如果你尚未使用 ApiHug 领域实体对象管理(ORM), 然后这个迁移将不会影响你,但最好和官方保持统一最新版本! :-)
0.7.8-RELEASE 添加功能:
- 将
Repository扩展, 迁移到独立的trait目录管理, 使代码结构更简单清晰; lite模式作为stub默认编译模式,将使他更迅捷;

Repository 迁移
目的:
- 使
repository更直接简单. - 使
repository扩展更方便维护.
举个在你模块 book-app 已存在 的 repository为例: com.novel.book.wire.domain.book.repository.BookAuthorRepository:
现有逻辑在: in book-app\src\main\stub\com\novel\book\wire\domain\book\repository\BookAuthorRepository:
@Repository
@SuppressWarnings("Duplicates")
public interface BookAuthorRepositoryextends HopeJdbc<BookAuthor>,BookJdbcSupport,BookAuthorDSL,ListCrudRepository<BookAuthor, Long> {@Derived@QueryOptional<BookAuthor> findByName(final String name);//Other method
}
⚠️⚠️⚠️ 首先保证你的 @Derived 已经备份, 在你跑 stub 命令前;(如果版本管理,先commit为妙)
因为升级后的 stub 只保留纯 generated代码, 也就是是可以跑 stub 命令中被完全删除.
Step1
跑下本模块的 stub 命令, 首先保证你SDK 版本已经被更新到 0.7.8-RELEASE+, gradle\libs.versions.toml:
[versions] # libraries apihug = "0.7.8-RELEASE"
命令行可以到你项目的 README.md 找到:
./gradlew.bat book-app:clean stub build -x test -x stubTest
跑完后你会看到一个新的 sourceSet: book-app\src\main\trait;
💁♀️ 你可能需要重新到你的 gradle tool window 触发本项目的 Reload Gradle Project ,否则可能提醒 book-app\src\main\trait 不能被当做 sourceSet!
Step2
- 手动将
@Derivedcopy 回到_BookAuthorRepository(trait 目录下) &BookAuthorRepository(stub 目录)(只有第一次迁移需要,以后只需要在_BookAuthorRepository编写); - 再次启动
stub命令.
从今往后, 所有Repository扩展 @Derived 方法, 都可以在独立的 book-app\src\main\trait 目录维护啦:
stub命令将你需要融入(trait)的方法(也就是老的方法)合进到运行时的BookAuthorRepository类- 避免
BookAuthorRepository在持续开发中大量的冲突,保持他的简单和直观. - 也很容易维护我们的 repository扩展接口, 这里保持纯的 SQL 逻辑;
真实项目的目录结构:
+---java | \---com | \---novel | \---book +---stub | \---com | \---novel | \---book | \---wire | \---domain | +---account | | +---dsl | | \---repository | +---book | | +---dsl | | \---repository | \---job | +---dsl | \---repository \---trait\---t\---com\---novel\---book\---wire\---domain+---account| \---repository+---book| \---repository\---job\---repository
Best Tips
你可以把 _BookAuthorRepository 想象成 BookAuthorRepository的伴生类(虽然有继承关系:方便获得编辑器提示) ;
只是 ApiHug 工具链完全帮你处理掉了过程的复杂性!
参考Scala 半生对象 Companion objects;
如果你过程中遇到任何问题,请垂询我们:
