🤗 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
- 手动将
@Derived
copy 回到_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;
如果你过程中遇到任何问题,请垂询我们: