<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Jason ---分享,共同進步

    激情成就夢想,努力創造未來
    隨筆 - 53, 文章 - 1, 評論 - 45, 引用 - 0
    數據加載中……

    spring 常識2

    1, Spring bean 定義

    spring bean 定義可能包含大量的配置信息,包括容器相關的信息(比如初始化方法,靜態工廠方法

    等)、構造函數參數、屬性等。如果兩個bean之間的配置信息大同小異,可采用bean的繼承來減少重

    復配置工作。子bean定義可以從父bean定義繼承部分配置。它也可覆蓋一些配置,或者添加一些配置

    。使用繼承配置可以節省很多輸入工作,實際上就是一種模板形式。

    spring中事務配置中就有這樣例子,為了使用事務只要父配置了事務代理就可以了,所有需要事務的

    bean只要繼承父就可以了。說到這個就在多說幾句,父bean通常不需要實例化的,而僅僅作為子bean

    定的的模板使用;而ApplicationContext默認預初始化所有的singleton bean。為了阻止父bean被預

    初始化,可以使用abstract屬性設置父bean為抽象bean。容器會忽略所有的抽象bean定義,預初始化

    時不初始化抽象bean

     

    2, spring 事務管理

    傳統的J2EE開發者對事務管理可能采用兩種策略

    (1),全局事務:全局事務通常由應用服務器管理,使用JTA。全局事務可跨越多個事務性的資源,保證

    在多個事務性資源間跨越時資源一致性。
    (2),局部事務:局部事務和特定資源相關,如,一個和JDBC鏈接關聯的事務。該事務盡能保證對該

    JDBC連接數據庫的一致性,對局部事務,應用服務器不需要參與事務管理,不能保證跨越多個資源的

    事務正確性。

     

    3,編程式事務

    Spring 提供兩種編程式的事務管理

     

    (1)使用TransactionTemplate事務管理

    (2)直接使用一個PlatformTransactionManager實現類管理事務。

     

    兩種編程式的事務都不需要與特定的事務API耦合,第一種更符合Spring模板式的編程模型,因此通常推薦采用第一種方式,第二種非常類似于JTA的UserTransaction的API編程,區別是減少了異常處理。

     

     

     

    4,聲明式事務

    Spring的聲明式事務是通過面向切面(AOP)實現。

    (1)使用聲明式事務管理

    通常,通過TransactionPoxyFactoryBean為目標Bean生成Spring事務代理。當bean實例的方法需要事務管理時,采用TransactionPoxyFactoryBean來自目標bean生成事務代理。每個TransactionPoxyFactoryBean為一個具體的目標bean生成代理對象,代理對象的方法改寫了目標bean的方法,就是在目標bean的方法執行之前加入開始事務,在目標bean方法結束之后提交事務,遇到指定異常回滾事務

     

        定義事務代理bean模板

    Xml代碼 復制代碼
    1. <bean id="txProxyTemplate" abstract="true"  
    2.     class="<SPAN style="COLOR: #ff0000">org.springframework.transaction.interceptor.TransactionProxyFactoryBean</SPAN>">  
    3.     <property name="transactionManager">  
    4.         <ref bean="transactionManager" />  
    5.     </property>  
    6.     <property name="transactionAttributes">  
    7.         <props>  
    8.             <prop key="trans_*">PROPAGATION_REQUIRED</prop>  
    9.             <prop key="query*">  
    10.                 PROPAGATION_REQUIRED,readOnly,-Exception   
    11.             </prop>  
    12.             <prop key="find*">  
    13.                 PROPAGATION_REQUIRED,readOnly,-Exception   
    14.             </prop>  
    15.             <prop key="load*">  
    16.                 PROPAGATION_REQUIRED,readOnly,-Exception   
    17.             </prop>  
    18.             <prop key="*">PROPAGATION_REQUIRED,-Exception</prop>  
    19.         </props>  
    20.     </property>  
    21. </bean>  

     

     

    (2)根據BeanName自動創建事務代理

    如果同一個應用中有很多目標bean需要生成事務代理,當然可以為每個目標bean額外配置一個TransactionPoxyFactoryBean bean.這樣做的缺點是,配置文件相當臃腫而且難以維護,此時可以考慮使用自動事務代理。自動事務代理的思路是,當ApplicationContext初始化完成后,由上下文中的某個bean"后處理"每個目標bean,為這些目標bean生成事務代理。

    能為目標bean執行"后處理"的bean必須實現BeanFactoryPostProcessor接口,ApplicationContext完成初始化后,會自動初始化所有實現BeanFactoryPostProcessor接口的bean,并且讓它“后處理”其他bean.Spring提供BeanFactoryPostProcessor的實現類BeanNameAutoPoxyCreatorBeanNameAutoPoxyCreator可以用來處理ApplicationContext中其他bean,方法是通過名稱來識別,并且把他們用事務代理包裝起來。BeanNameAutoPoxyCreator生成的事務代理,和使用TransactionPoxyFactoryBean生成的事務代理基本一致。

     

        定義事務攔截bean

    Xml代碼 復制代碼
    1.  <bean id="transactionInterceptor"  
    2.   class="<SPAN style="COLOR: #ff0000">org.springframework.transaction.interceptor.TransactionInterceptor</SPAN>">  
    3.   <property name="transactionManager" ref="TransactionManager" />  
    4.      
    5.   <property name="transactionAttributes">  
    6.    <props>  
    7.     <prop key="create*">  
    8.      PROPAGATION_REQUIRED,-Exception   
    9.     </prop>  
    10.     <prop key="delete*">  
    11.      PROPAGATION_REQUIRED,-Exception   
    12.     </prop>    
    13.     <prop key="update*">  
    14.      PROPAGATION_REQUIRED,-Exception   
    15.     </prop>           
    16.     <prop key="get*">PROPAGATION_REQUIRED</prop>  
    17.    </props>  
    18.   </property>  
    19.  </bean>  
    Xml代碼 復制代碼
    1.  <bean  
    2.   class="<SPAN style="COLOR: #ff0000">org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator</SPAN>">  
    3.   <property name="beanNames">  
    4.    <value>*Service</value>  
    5.   </property>  
    6.   <property name="interceptorNames">  
    7.    <list>  
    8.     <value>transactionInterceptor</value>  
    9.    </list>  
    10.   </property>  
    11.  </bean>   

     

    次配置關鍵在兩個bean

    TransactionInterceptor

    BeanNameAutoProxyCreator

     

    (3)基于注釋式事務代理配置

    posted on 2010-12-04 11:52 agun 閱讀(467) 評論(0)  編輯  收藏 所屬分類: java web架構設計與系統分析

    主站蜘蛛池模板: 99在线视频免费观看| 亚洲精品无码精品mV在线观看| 免费国产成人18在线观看| 国产成人精品日本亚洲语音 | 国产产在线精品亚洲AAVV| 亚洲视频一区在线观看| 亚洲中文字幕不卡无码| 国产免费牲交视频| 亚洲免费网站观看视频| 99re免费在线视频| 欧洲人成在线免费| 精品国产免费人成网站| 激情婷婷成人亚洲综合| 亚洲精品国产摄像头| 2019亚洲午夜无码天堂| 久久精品国产亚洲AV久| 亚洲欧洲精品在线| 在线观看亚洲一区二区| 亚洲成在人天堂在线| 亚洲国产精品无码久久久秋霞2 | 亚洲国产成人精品无码区在线网站| 亚洲乱码一区二区三区在线观看| 亚洲精品国产成人影院| 免费一级毛片正在播放| 四只虎免费永久观看| 国产免费私拍一区二区三区| 日韩精品视频免费观看| 国产美女精品久久久久久久免费| 免费看www视频| 免费无码不卡视频在线观看| 天天看免费高清影视| 国产精品视_精品国产免费| 国外成人免费高清激情视频| 日本一区免费电影| 国产在线观看免费完整版中文版 | 亚洲午夜电影在线观看高清| 亚洲日韩中文字幕天堂不卡| 亚洲欧洲自拍拍偷午夜色| 亚洲一级片在线播放| 亚洲人成人网毛片在线播放| 在线精品亚洲一区二区|