基礎(chǔ)架構(gòu)沿用spring架構(gòu)模式瘪吏,同時(shí)增加infrastructure-extension蝉娜,對(duì)Quarkus的擴(kuò)展和補(bǔ)充
Domain
領(lǐng)域模型和倉(cāng)儲(chǔ)接口刻恭,僅依賴于CDI接口和基本類庫(kù)尸执,邏輯不變樊诺,功能不變
Repository
Domain中Repository接口的實(shí)現(xiàn)扶欣,依賴jdbc及mybatis[quarkus-mybatis鹅巍,MyBatis的Quarkus的封裝千扶,支持native模式]
MyBatis中使用方式和經(jīng)典模式一樣,沒(méi)有變化
Repository實(shí)現(xiàn)與Mapper分離骆捧,只有接口需要實(shí)現(xiàn)的部分澎羞,與Mapper是組合關(guān)系
使用MyBatis
因?yàn)镸yBatis使用了反射,為了支持native模式敛苇,我們有兩種方式妆绞,參考quarkus-native
1)配置ReflectionConfigurationFiles,參考?reflection-config?
quarkus.native.additional-build-args=-H:ResourceConfigurationFiles=resources-config.json,-H:ReflectionConfigurationFiles=reflection-config.json2)使用@RegisterForReflection
使用該方法會(huì)破壞Domain的依賴關(guān)系枫攀,使用該方法不支持第三方庫(kù)
為了統(tǒng)一處理反射情況括饶,推薦使用配置方式Quarkus-MyBatis配置,參考?MyBatis - Quarkus
Application
與傳統(tǒng)模式保持一致来涨,CDI使用javax.enterprise標(biāo)準(zhǔn)
輸入輸出:Application輸入使用xxxInput图焰,輸出使用xxxOutput,Input可以使用javax.validation進(jìn)行驗(yàn)證
異常情況:對(duì)于異常直接返回BusinessException
實(shí)體轉(zhuǎn)化:實(shí)體轉(zhuǎn)化使用xxxMapper蹦掐,使用mapstruct的@Mapper功能
WebApi
與傳統(tǒng)模式保持一致技羔,使用javax.ws.rs標(biāo)準(zhǔn)