spring容器中有兩種思想很重要,也就是我們常用的ioc和aop,如果理解了這兩種思想,對於我們學習設計模式和程式設計有很大的幫助,美國四人幫 (gof)寫的設計模式中,有很多都用到了ioc的思想。簡單的說就是依賴注入的思想。常見的一種情況:如果乙個類中要復用另外乙個類中的功能時,我們可 能會首先想到繼承,如果你知道ioc這種思想的話,我想你不會用繼承,你會馬上想到把要用到功能抽取出來,在我們要用到的類中只需通過set方法簡單的注 入就可以了,其實這裡用到了物件的組合代替繼承,這樣不僅避免了單一繼承,還很好的實現了松耦合。同時也遵循了物件導向的程式設計的設計原則:多用組合,少用 繼承。在這裡對於ioc和aop這兩種思想的好處。我就不介紹了。接下來我要說的是spring中幾種常見的事務配置,是aop和ioc的充分體現。
在說點題外話,以前ejb在j2ee中開發中可是大名鼎鼎的了。就是因為ejb提供了很多服務,而不需要我們去開發了,其中用到最多的算是它提供的宣告式 事務了。在spring沒有出現之前,ejb在j2ee開發中扮演著非常重要的角色。同時也是很多專案失敗的罪魁禍首。其中的原因就是因為它是重量級,強 侵入性收費的框架。需要昂貴的伺服器支援,在加上它的測試更是讓人頭痛。而spring恰恰與它相反。spring是乙個輕量級的,非侵入性的開源框架。 它提供的宣告式事務的功能更是強大,不需要容器的支援。這一點吸引力很多人願意放棄ejb而使用spring。
讓我們言歸正傳吧。
以下兩個bean的配置是下面要用到的。
class="org.springframework.orm.hibernate3.hibernatetransactionmanager">
class="com.jack.fund.service.serviceimpl.fundservice">
可能還有其他很多模組。可能只是其中的模組。
第一種:配置宣告式事務的方法如下。也是我們最常用的方法了,它適用於你的庫表比較少的情況下。
class="org.springframework.transaction.interceptor.transactionproxyfactorybean">
false
com.jack.fund.service.ifundservice
propagation_required
propagation_required
propagation_required
propagation_required
propagation_required,readonly
以下可能還有其他的***servicedaoproxy.大家可以看出針對每乙個功能模組配置乙個業務**服務。如果模組多大話,就顯得**有點多了,發現他們只是稍微一點不一樣。這時我們就應該想到繼承的思想。用第二種方法。
第二種:配置宣告式事務的方法如下。這種情況適合相對比較多的模組時使用。
class="org.springframework.transaction.interceptor.transactionproxyfactorybean"
lazy-init="true" abstract="true">
propagation_required
propagation_required
propagation_required
propagation_required
propagation_required,readonly
而具體的模組可以簡單的這樣配置。只要指明它的parent(父類)就可以了。父類一般把abstract="true",因為在容器載入的時候不需要初始化,等到用的時候再有它的子類呼叫的時候,再去初始化。
這樣配置的話,如果有多個像fundservice這樣模組時,可以少些很多重複的**。
第三種:配置宣告式事務的方法如下。主要利用beannameautoproxycreator自動建立事務**
class="org.springframework.transaction.interceptor.transactioninterceptor">
propagation_required
propagation_required
propagation_required
propagation_required
propagation_required,readonly
class="org.springframework.aop.framework.autoproxy.beannameautoproxycreator">
fundservice
transactioninterceptor
這種方法主要利用了***的原理。
前三種方法一般都必需指定具體的模組bean.如果模組過多話,比如乙個大型的**一般有幾十個模組。我們就得考慮用第四種的配置方式了。自動建立事務**的方式了。
第四種:配置宣告式事務的方法如下。
class="org.springframework.transaction.interceptor.transactioninterceptor">
class="org.springframework.aop.framework.autoproxy.beannameautoproxycreator">
*service
transactioninterceptor
自動**還有一種用法就是結合正規表示式和advice使用。
class="org.springframework.transaction.interceptor.transactioninterceptor">
class="org.springframework.aop.framework.autoproxy.defaultadvisorautoproxycreator" />
class="org.springframework.aop.support.regexpmethodpointcutadvisor">
這個方法可以針對具體的模組進行攔截並進行事務處理。
Spring宣告式事務的四種方式
spring中幾種常見的事務配置,是aop和ioc的充分體現 以下兩個bean的配置是下面要用到的。可能還有其他很多模組。可能只是其中的模組。第一種 配置宣告式事務的方法如下。也是我們最常用的方法了,它適用於你的庫表比較少的情況下。false com.jack.fund.service.ifunds...
Spring中的四種宣告式事務的配置
spring中的四種宣告式事務的配置 spring容器中有兩種思想很重要,也就是我們常用的ioc和aop,如果理解了這兩種思想,對於我們學習設計模式和程式設計有很大的幫助,美國四人幫 gof 寫的設計模式中,有很多都用到了ioc的思想。簡單的說就是依賴注入的思想。常見的一種情況 如果乙個類中要復用另...
Spring中的四種宣告式事務的配置
spring中的四種宣告式事務的配置spring容器中有兩種思想很重要,也就是我們常用的ioc和aop,如果理解了這兩種思想,對於我們學習設計模式和程式設計有很大的幫助,美國四人幫 gof 寫的設計模式中,有很多都用到了ioc的思想。簡單的說就是依賴注入的思想。常見的一種情況 如果乙個類中要復用另外...