偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

詳細(xì)剖析Spring AOP框架

開發(fā) 后端
這里介紹Spring AOP框架,Spring基于Inversion of Control(控制反轉(zhuǎn))模式(也稱為依賴注入),它不僅可以連接組件服務(wù),還可以連接關(guān)聯(lián)的事務(wù)上下文。

在向大家詳細(xì)介紹Spring AOP框架之前,首先讓大家了解下Spring裝配組件事務(wù),然后全面介紹Spring AOP框架

本文主要探討Spring AOP框架,包括其事務(wù)上下文。從J2EE應(yīng)用程序內(nèi)部連接到單個(gè)的數(shù)據(jù)庫(kù)并不是什么難事。但是,如果要裝配或者集成企業(yè)級(jí)的組件,情況就復(fù)雜了。一個(gè)組件可以有一個(gè)或多個(gè)支持它的數(shù)據(jù)庫(kù),因此,當(dāng)裝配兩個(gè)或更多的組件時(shí),我們希望能夠保持在跨組件的多個(gè)數(shù)據(jù)庫(kù)中進(jìn)行的操作的原子性。J2EE服務(wù)器為這些組件提供了一個(gè)容器來(lái)保證事務(wù)原子性和跨組件獨(dú)立性。如果使用的不是J2EE服務(wù)器,則可以利用Spring來(lái)幫助我們。Spring基于Inversion of Control(控制反轉(zhuǎn))模式(也稱為依賴注入),它不僅可以連接組件服務(wù),還可以連接關(guān)聯(lián)的事務(wù)上下文。在本文中,我們將Hibernate用作對(duì)象/關(guān)系持久性存儲(chǔ)和查詢服務(wù)。

裝配組件事務(wù)

假設(shè)在企業(yè)組件庫(kù)里,我們已經(jīng)有一個(gè)審計(jì)組件,里面有可以被客戶端調(diào)用的服務(wù)方法。然后,當(dāng)我們想要構(gòu)建一個(gè)訂單處理系統(tǒng)時(shí),我們發(fā)現(xiàn)存在這樣的設(shè)計(jì)要求:OrderListManager組件服務(wù)同樣需要審計(jì)組件服務(wù)。OrderListManager創(chuàng)建和管理訂單,因此所有的 OrderListManager服務(wù)都有自己的事務(wù)屬性。當(dāng)我們從OrderListManager服務(wù)內(nèi)調(diào)用審計(jì)組件時(shí),我們實(shí)際上是在把 OrderListManager服務(wù)的事務(wù)上下文傳播給審計(jì)服務(wù)。也許將來(lái)新的業(yè)務(wù)服務(wù)組件同樣需要審計(jì)組件,但那時(shí)將在一個(gè)不同的事務(wù)上下文中調(diào)用它。實(shí)際結(jié)果就是,即使審計(jì)組件的功能保持不變,它也可能是由別的業(yè)務(wù)服務(wù)功能組成,包含了混搭的(mix-and-match)事務(wù)屬性來(lái)提供不同的運(yùn)行時(shí)事務(wù)性行為。

如果客戶端有TX上下文,那么OrderListManager既可以參與其中,也可以啟動(dòng)一個(gè)新的TX,這取決于客戶端是否在TX中,以及為OrderListManager方法指定了什么樣的TX屬性。這同樣適用于 OrderListManager服務(wù)依次調(diào)用AuditManager方法的情況。

EJB架構(gòu)允許組件裝配者聲明式地給出正確的事務(wù)屬性,從而為他們提供這種靈活性。我們不探討聲明式事務(wù)管理的替代方案(即所謂的編程式事務(wù)控制),因?yàn)檫@會(huì)牽涉到代碼更改,從而產(chǎn)生不同的運(yùn)行時(shí)事務(wù)行為。幾乎所有的J2EE應(yīng)用服務(wù)器都按照X/Open XA規(guī)范提供了服從兩階段提交協(xié)議的分布式事務(wù)管理器?,F(xiàn)在的問題是,我們能不能利用EJB服務(wù)器來(lái)實(shí)現(xiàn)相同的功能?Spring就是其中的一種解決方案。讓我們來(lái)看一下Spring如何幫助我們解決事務(wù)組裝的問題:

使用Spring進(jìn)行事務(wù)管理

我們將看到一個(gè)輕量級(jí)的事務(wù)基礎(chǔ)架構(gòu),它實(shí)際上可以管理組件級(jí)的事務(wù)裝配。Spring是其中的一個(gè)解決方案。它的優(yōu)點(diǎn)在于,我們不會(huì)被捆綁到 J2EE容器服務(wù)(如JNDI DataSource)上。最棒的一點(diǎn)是,如果我們想把這個(gè)輕量級(jí)事務(wù)基礎(chǔ)架構(gòu)關(guān)聯(lián)到一個(gè)已可用的J2EE容器基礎(chǔ)架構(gòu),將不會(huì)有任何問題。看起來(lái)我們可以利用兩者的優(yōu)點(diǎn)。

另一方面,Spring這個(gè)輕量級(jí)事務(wù)基礎(chǔ)架構(gòu)使用了一個(gè)面向方面編程(Aspect-Oriented Programming,AOP)框架。Spring AOP框架使用了一個(gè)支持AOP的Spring bean工廠。在特定于Spring的配置文件applicationContext.xml中,通過(guò)在組件服務(wù)級(jí)指定事務(wù)特性來(lái)劃分事務(wù)。

  1. <beans> 
  2.  
  3. <!-- other code goes here... --> 
  4.  
  5. <bean id="orderListManager"class="org.springframework.
    transaction.interceptor.TransactionProxyFactoryBean"
    > 
  6. <property name="transactionManager"> 
  7. <ref local="transactionManager1"/> 
  8. </property> 
  9. <property name="target"> 
  10. <ref local="orderListManagerTarget"/> 
  11. </property> 
  12. <property name="transactionAttributes"> 
  13. <props> 
  14. <prop key="getAllOrderList"> 
  15. PROPAGATION_REQUIRED  
  16. </prop> 
  17. <prop key="getOrderList"> 
  18. PROPAGATION_REQUIRED  
  19. </prop> 
  20. <prop key="createOrderList"> 
  21. PROPAGATION_REQUIRED  
  22. </prop> 
  23. <prop key="addLineItem"> 
  24. PROPAGATION_REQUIRED,-com.example.exception.FacadeException  
  25. </prop> 
  26. <prop key="getAllLineItems"> 
  27. PROPAGATION_REQUIRED,readOnly  
  28. </prop> 
  29. <prop key="queryNumberOfLineItems"> 
  30. PROPAGATION_REQUIRED,readOnly  
  31. </prop> 
  32. </props> 
  33. </property> 
  34. </bean> 
  35.  
  36. </beans> 

【編輯推薦】

  1. Spring Hibernate簡(jiǎn)單討論
  2. OSGi與Spring:設(shè)置Spring DM開發(fā)環(huán)境
  3. 使用Spring DM創(chuàng)建Hello World,以及OSGi服務(wù)
  4. Spring MVC總結(jié):善用注解,生活更輕松
  5. 概括spring hibernate集成
責(zé)任編輯:佚名 來(lái)源: IT168
相關(guān)推薦

2022-06-07 07:58:45

SpringSpring AOP

2024-12-24 14:01:10

2009-09-03 15:03:27

C#實(shí)現(xiàn)AOP微型框架

2022-06-08 08:04:28

Springservicerepository

2009-06-19 14:49:43

Spring框架

2011-09-15 10:15:30

Spring

2023-02-01 09:15:41

2011-05-18 09:47:39

spring

2015-05-06 10:05:22

javajava框架spring aop

2009-06-19 13:28:30

Spring AOPSpring 2.0

2009-11-04 16:40:47

AOP.NET Ora

2023-01-30 11:35:14

SpringJava

2009-08-27 17:14:36

C# Socket

2011-06-15 12:36:58

JSPBEAN

2009-09-02 10:26:23

JSP和BEAN

2022-02-17 13:39:09

AOP接口方式

2009-06-22 10:41:34

Spring.AOP

2009-09-18 10:00:17

C#數(shù)組操作

2009-09-03 16:58:49

C#內(nèi)存管理

2009-08-31 17:26:32

C#異常處理
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)