Legacy Spring应用程序 - 切入点值是什么意思?

时间:2013-03-04 07:39:44

标签: java spring spring-transactions pointcut

我已经“继承”了旧的Spring应用程序。目前它正在使用Spring 2.5(只升级一次),我希望进一步升级到Spring 3.

我了解大多数应用程序配置。只有一部分我“不是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。(..))”是什么意思(我理解切入点的说法)
  • 在建议的属性部分中,我们说将事务应用于所有与save *相关的​​方法,并且对于所有内容,只读是假的。谁能解释为什么这个设置有意义?对于所有具有事务支持的方法(即只保存*方法),它是否是附加的并且有效地说,我也希望这些方法不是只读事务。或者它是否将不同的东西(即某种形式的交易支持)应用于包含事务过滤器的每种方法(在切入点中定义)。

感谢您的任何澄清。请不要一般答案 - 我需要对此进行具体解释。

2 个答案:

答案 0 :(得分:2)

由于tx:method的属性read-only的默认值为false,表示事务是读/写。

所以在我看来,

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

相当于

<tx:method name="*" />

答案 1 :(得分:0)

execution(* *..ProductManager.*(..))表示“对于ProductManager类中的所有方法”

tx:建议设置不是附加的。 它表示对于以保存开头的所有方法,请使用默认的事务设置。 对于其他人,此设置意味着它们不是只读事务。

对于常识,人们会期待

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