1. 程式人生 > >一篇SSM框架整合友好的文章(二)

一篇SSM框架整合友好的文章(二)

上一篇講述了DAO 層,mybatis實現資料庫的連線,DAO層介面設計,以及mybtis和spring的整合。DAO層採用介面設計方式實現,介面和SQL實現的分離,方便維護。DAO層所負責的僅僅是介面的設計和實現,而負責的邏輯即一個或多個DAO層介面的拼接是在Sevice層中完成。這篇文章接上篇文章,主要講述Service層的實現、和Spring的整合以及宣告如何宣告事物。

###一、Service層介面設計
業務介面設計應當站在“使用者”角度設計介面,應遵循三個規範:合理的命令,明確的引數,返回結果(正常介面/異常結果)。本例子採用的Java高併發的秒殺API系列課程的例子,建立設計的業務邏輯介面如下:

 
 

直接上程式碼了,在這裡講下秒殺業務的邏輯:首先是獲取秒殺列表,點選列表進入秒殺詳情頁,這時獲取系統時間,如果秒殺開始,獲取秒殺地址,點選秒殺,執行秒殺。所以業務邏輯也只設計了這相關的4個業務邏輯。其中使用了dto層去傳遞響應資料,以及自定義異常,所有的異常都繼承執行異常,這是為了方便spring自動回滾,這兩個知識點,自行看原始碼。

 
 

和上一篇文章使用spring託管dao介面一樣,這裡也需要用 spring 託管service. spring ioc 使用物件工程模式,對所有的注入的依賴進行了管理,暴露出了一致性的訪問介面,當我們需要某個物件時,直接從spring ioc中取就行了,不需要new,也不需要對它們的生命週期進行管理。更為重要的是spring 自動組裝依賴,比如最終的介面controller依賴service,而service依賴dao,dao依賴sessionfactory,而sessionfactory依賴datasource,這些層層依賴是通過spring管理並層層組裝,只要我們簡單配置和註解就可以方便的使用,程式碼的分層和程式設計的藝術在spring框架中展現得淋漓盡至。

本專案採用spring ioc :

1.xml配置

2.包掃描

3.annotation註解。

建立sping-service.xml

採用包掃描+註解方式,首先在xml中宣告包掃描:

 
 

然後在org,forezp.service包下的類採用註解。比如@Service 註解宣告是一個service, @Autowired注入service 所需依賴。

 
 

只需要一個包掃描和幾個簡單的註解就可以將service註解到spring ioc容器中。

在秒殺案例中,我們需要採用事物來防止資料的正確性,防止重複秒殺,防止庫存不足、庫存剩餘等情況。一般使用事物需要開啟事物/經常一些列的操作,提交或者回滾。spring宣告式事物,就是將事物的開啟、

雅思培訓一般多少錢提交等託管給spring管理,我們只需要注重如何修改資料。

配置spring 宣告式事物
在spring-service.xml中配置:

 
 

在需要事物的業務邏輯下加 @Transactional註解。
比如在開啟秒殺方法:

 
 

注意:

1開發團隊達成一致約定,明確標註事務方法的程式設計風格

2:保證事務方法的執行時間儘可能短,不要穿插其他網路請求,RPC/HTTP請求或者剝離到事務方法外

3:不是所有的方法都需要事務,如只有一條修改操作,只讀操作不需要事務控制

需要配置:

@ContextConfiguration({
“classpath:spring/spring-dao.xml”,
“classpath:spring/spring-service.xml”
})
直接上程式碼:

 
 

這篇文章主要講了service業務介面的編寫和實現,以及採用xml和註解方式講service 注入到spring ioc,以及宣告式事物,不得不感嘆spring 的強大。下一篇文章講講述 web層的開發,spring mvc的相關配置。感謝大家,再接再厲,晚安。_