2016-04-11 38 views
3

使用org.springframework.transaction.interceptor.TransactionProxyFactoryBean的在我的項目都喜歡這種模式實現了管理類,什麼是Spring

<bean id="companyManagerTxProxy" abstract="true" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"> 
     <property name="transactionManager" ref="transactionManager" /> 
     <property name="proxyTargetClass"><value>true</value></property> 
     <property name="transactionAttributes"> 
      <props> 
       <prop key="create*">PROPAGATION_REQUIRED</prop> 
       <prop key="update*">PROPAGATION_REQUIRED</prop> 
       <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop> 
       <prop key="*">PROPAGATION_REQUIRED</prop> 
      </props> 
     </property> 
    </bean> 
    <bean id="companyAdminManager" parent="companyManagerTxProxy" scope="prototype"> 
     <property name="target"> 
      <bean class="lucky.src.bto.controllerImpl.CompanyAdminManagerImpl"> 
      </bean> 
     </property> 
    </bean> 

能否請您解釋一下我爲什麼我們使用org.springframework .transaction.interceptor.TransactionProxyFactoryBean創建所有經理的bean。它的確切用途是什麼?

回答

1

這是一個廣泛的問題,因爲這裏有概念性的解釋。非常簡短:TransactionProxyFactoryBean是Spring的Transaction支持的一部分,它允許應用程序以獨立於服務器的方式具有「事務性」行爲。換句話說:如果使用TransactionProxyFactoryBean配置服務,您可以替換EJB容器管理的bean。

您可能需要了解交易的概念整體。但是,在很短的解釋是:

交易(讀取或寫入信息)必須ACID和 確保我們需要給「交易」行爲的軟件 資源(代碼),它與數據庫進行交互(有可能是其他 交易)。

上面的解釋在AOP(Aspect Oriented Programming)中觸及了一點,在這裏,你想給事務的行爲是「aspect」。

通常有需要進行配置三件事情:

transactionManager的,目標和transactionAttribute。

transactionAttribute是您爲資源的讀取和寫入提供事務行爲的位置。在你的例子中,你的companyAdminManager被賦予了行爲行爲。 companyAdminManager反過來必須配置datasource這將有數據庫網址,用戶/傳遞和其他相關信息。

這裏有兩個很好的解釋(解釋每一條線路)

1)Click this to to read each line of configuration explained

2)我發現下面的博客文章由蘇格蘭人是基本的和容易理解的例子有說明。請閱讀click here