2013-03-04 80 views
0

我已經「繼承了」舊的傳統Spring應用程序。目前它使用的是Spring 2.5(只是升級了一次),並希望將其進一步升級到Spring 3.Legacy Spring應用程序 - 切入點值是什麼意思?

我明白大部分的應用程序配置。只有一部分我「不是100%」。我可以大致猜測這可能意味着,但我需要絕對的把握,因此發佈了這個問題:

下面是配置片段(取決於註解驅動的事務管理器這裏沒有顯示):

<aop:config> 
    <aop:advisor pointcut="execution(* *..ProductManager.*(..))" 
     advice-ref="txAdvice" /> 
</aop:config> 

<tx:advice id="txAdvice"> 
    <tx:attributes> 
     <tx:method name="save*" /> 
     <tx:method name="*" read-only="false" /> 
    </tx:attributes> 
</tx:advice> 

我具體的兩個問題是:

  • 什麼是 「執行(* ..ProductManager(..)。)」 平均(我的理解切入點說法)
  • 在ATTRIB utes我們所說的建議中的一部分將事務應用於所有保存*相關的方法,並且對於所有的只讀是錯誤的。任何人都可以解釋爲什麼這個設置有意義嗎對於所有具有事務支持的方法(即只保存*方法),它是否具有附加性和有效性,我也希望這些方法不是隻讀事務。或者它將不同的東西(即某種形式的事務支持)應用於每個包含transacion過濾器的方法(在切入點中定義)。

感謝您的任何澄清。請不要普遍的答案 - 我需要一個具體的解釋。

回答

0

execution(* *..ProductManager.*(..))表示,「在ProductManager類的所有方法」

TX:建議設置不是添加劑。 它說,對於所有以保存開頭的方法,使用默認的事務設置。 對於其他人,此設置意味着它們不是隻讀事務。

對於常識,人們所期望的

<tx:method name="save*" read-only="false" /> 
<tx:method name="*" /> 
+1

Arikusu - 謝謝你,很大的反響,並與我的理解贊同。這是我在一年中合作過的最差的高質量應用程序之一。不幸的是,代碼庫中沒有* ProductManager *類,所以我猜想事務管理在水中已經死了。我完全贊同你保存*行,通常是你所規定的只讀行。它是那些你不能直觀的應用程序之一。沒有一個測試案例,這個應用程序必須已經建成並支持超過6 - 8年。是的,這些應用程序仍然在那裏。 – arcseldon 2013-03-04 12:23:43

+0

錯字 - 不只是只讀,重新保存方法 – arcseldon 2013-03-04 12:51:07

2

由於tx:method有屬性read-only默認值設置爲false,意味着事務是讀/寫。

在我看來

所以,

<tx:method name="save*" read-only="false" /> <tx:method name="*" />

相當於

<tx:method name="*" />