0

私は古いレガシーSpringアプリケーションを「継承」しました。現在、Spring 2.5を使用しており(一度アップグレードしただけです)、Spring3にさらにアップグレードすることを検討しています。

私はほとんどのアプリケーション構成を理解しています。私が「100%ではない」という部分は1つだけです。私はそれが何を意味するかを大まかに推測することができますが、私は絶対に確信する必要があるので、この質問を投稿します:

構成スニペットは次のとおりです(ここに示されていないアノテーション駆動型トランザクションマネージャーによって異なります)。

<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>

私の具体的な2つの質問は次のとおりです。

  • 「execution(* .. ProductManager。(..))」とはどういう意味ですか(ポイントカットの用語を理解しています)
  • アドバイスの属性セクションでは、すべてのsave *関連メソッドにトランザクションを適用すると言っていますが、すべての読み取り専用はfalseです。その設定が理にかなっている理由を誰かが説明できますか?トランザクションをサポートするすべてのメソッド(つまり、save *メソッドのみ)について、これらのメソッドを読み取り専用トランザクションにしないようにすることも、付加的で効果的に言えますか。または、包括的トランザクションフィルター(ポイントカットで定義)のすべてのメソッドに異なるもの(つまり、何らかの形式のトランザクションサポート)を適用していますか?

ご説明いただきありがとうございます。一般的な答えはありません。具体的な説明が必要です。

4

2 に答える 2

2

tx:methodデフォルト値がfalseの属性があるようread-onlyに、トランザクションが読み取り/書き込みであることを意味します。

だから私の意見では、

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

と同等です

<tx:method name="*" />

于 2013-03-19T15:16:59.237 に答える
0

execution(* *..ProductManager.*(..))つまり、「ProductManagerクラスのすべてのメソッドに対して」

tx:advice設定は加算的ではありません。保存で始まるすべてのメソッドで、デフォルトのトランザクション設定を使用することを示しています。その他の場合、この設定は、読み取り専用トランザクションではないことを意味します。

常識としては、

<tx:method name="save*" read-only="false" />
<tx:method name="*" />
于 2013-03-04T07:59:26.153 に答える