* 10秒鐘就可以建立一個(gè)后端服務(wù)
* 甚至沒(méi)有Controller的概念
* 分布式鎖,只需要一行注解
* 本機(jī)測(cè)試,響應(yīng)時(shí)間最低可達(dá)9毫秒,吐吞量最高可達(dá)1200
按照傳統(tǒng)的開(kāi)發(fā)方式,如果要開(kāi)發(fā)一個(gè)后端接口,需要分為以下三步
* 創(chuàng)建controller
* 創(chuàng)建service
* 創(chuàng)建dao(甚至?xí)?chuàng)建存放sql的xml)
但是,我們編寫(xiě)一個(gè)接口,重點(diǎn)應(yīng)該是放在業(yè)務(wù)邏輯上的,也就是說(shuō) 我們的關(guān)注點(diǎn)應(yīng)該在第二步,但是通常第一步和第三步的重復(fù)工作量讓我們感到窒息,所以我梳理了一下,制定了一個(gè)新玩法,這套新玩法就叫聲明式API
* 寫(xiě)業(yè)務(wù)邏輯
* 聲明一個(gè)API給前端
* 將API與業(yè)務(wù)邏輯關(guān)聯(lián)
所以我們是這樣玩的
@MarsBean("testService")
public class TestService {
要返回的數(shù)據(jù)類型 selectListForName(參數(shù)1, 參數(shù)2, 參數(shù)3, 參數(shù)4){
// 第一步 根據(jù)testDTO里的參數(shù)從xx表查詢需要的數(shù)據(jù)
// 第二步 根據(jù)查出來(lái)的數(shù)據(jù),去操作xx2表
// 第三步 對(duì)前兩步的結(jié)果匯總,進(jìn)行xxx操作
return 數(shù)據(jù)(直接返回即可,會(huì)自動(dòng)變成json);
}
}
@MarsApi
public interface TestApi {
Object selectList(TestVO testVO);
}
@MarsApi
public interface TestApi {
@MarsReference(beanName = "testService",refName = "selectListForName")
Object selectList(TestVO testVO);
}
對(duì),你沒(méi)看錯(cuò),API的方法和他引用的那個(gè)方法,參數(shù)列表可以不一樣, 框架會(huì)自動(dòng)把API的參數(shù)的值賦值到引用的那個(gè)方法的參數(shù)列表
引用的方法甚至可以無(wú)參,參數(shù)目前只支持自定義對(duì)象和Map
這套思想的核心是,把后端看作是一個(gè)獨(dú)立個(gè)體,并不是為服務(wù)前端而存在的, 后端就寫(xiě)后端的業(yè)務(wù)邏輯好了,如果前端需要數(shù)據(jù),那我們就開(kāi)個(gè)門(mén)給他
通過(guò)更換MarsReference的配置,可以關(guān)聯(lián)到不同的業(yè)務(wù)邏輯
如果前端不需要這個(gè)接口了,直接無(wú)腦刪就好了,因?yàn)檫@只是一個(gè)抽象方法
后端專注業(yè)務(wù)邏輯就好了,不需要考慮跟前端互動(dòng),前端需要的時(shí)候開(kāi)個(gè)門(mén)就好了
首先聲明式API是對(duì)前后端交互方式的一次變革,省去了Controller。
其實(shí)這種風(fēng)格在微服務(wù)里很常見(jiàn),比如Dubbo的api, 既然微服務(wù)接口可以用interface來(lái)提供對(duì)外的服務(wù),那么我們也可以把它用到http接口上吧。
* 單表操作和固定sql操作,僅需一行注解
* 分頁(yè)僅需調(diào)用一個(gè)方法,沒(méi)有任何第三方依賴
* 分布式鎖,只需要一行注解
* 沒(méi)有像Mybatis一樣的sqlMapper.xml
* 支持AOP,IOC,聲明式事務(wù)
* 搭建僅需三步,并提供官方中文文檔,再也不需要滿大街的搜Spring的機(jī)翻文檔或者個(gè)人博客了
在要加鎖的方法上添加RedisLock注解
@RedisLock(key = "自己定義一個(gè)key")
public int insert(){
return 1;
}
這個(gè)鎖會(huì)在事務(wù)開(kāi)啟之前獲取,在事務(wù)提交以后解鎖,并且只對(duì)MarsBean有效,對(duì)API和DAO無(wú)效
如果你不需要鎖住整個(gè)方法,只需要鎖一小段代碼,那么可以去我的官網(wǎng)查看相應(yīng)的方法
官網(wǎng):http://mars-framework.com/
創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國(guó)云服務(wù)器,動(dòng)態(tài)BGP最優(yōu)骨干路由自動(dòng)選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機(jī)房獨(dú)有T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確進(jìn)行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動(dòng)現(xiàn)已開(kāi)啟,新人活動(dòng)云服務(wù)器買(mǎi)多久送多久。
分享標(biāo)題:面向聲明式API編程(DAP)-Mars-java框架-創(chuàng)新互聯(lián)
地址分享:http://chinadenli.net/article46/ddgseg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機(jī)網(wǎng)站建設(shè)、ChatGPT、全網(wǎng)營(yíng)銷推廣、虛擬主機(jī)、網(wǎng)頁(yè)設(shè)計(jì)公司、服務(wù)器托管
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容