ホームページ > Java > &#&チュートリアル > Spring の @Transactional アノテーションはプライベート メソッドでも機能しますか?

Spring の @Transactional アノテーションはプライベート メソッドでも機能しますか?

Barbara Streisand
リリース: 2024-12-25 14:09:11
オリジナル
289 人が閲覧しました

Does Spring's @Transactional Annotation Work on Private Methods?

Spring のプライベート メソッドに対するトランザクション属性の有効性

Spring 内では、@Transactional アノテーションによりメソッドのトランザクション境界の境界設定が可能になります。 Spring Bean 内のプライベート メソッドにこのアノテーションを適用した場合の有効性に関して、一般的な質問が生じます。

答えは簡単です。@Transactional はプライベート メソッドには影響しません。これは、Spring で採用されているプロキシ ジェネレーターがプライベート メソッドを無視しているためです。

さらに明確にするために、次の例を考えてみましょう:

public class Bean {
  public void doStuff() {
     doPrivateStuff();
  }
  @Transactional
  private void doPrivateStuff() {

  }
}
ログイン後にコピー

プライベート メソッド doPrivateStuff() に @Transactional アノテーションがあるにもかかわらず、効果がないままであり、トランザクションの動作は変更されません。この動作は Spring マニュアルの第 10.5.6 章に文書化されており、次のように明示的に記載されています。

「プロキシを使用するときは、パブリック可視性を持つメソッドにのみ @Transactional アノテーションを適用する必要があります。プロテクトされたアノテーションを行う場合は、プライベートまたは @Transactional アノテーションが付いているパッケージに表示されるメソッドを使用すると、エラーは発生しませんが、アノテーションが付けられたメソッドには構成されたトランザクション設定が表示されません。必要に応じて、AspectJ の使用を検討してください。非パブリックメソッドに注釈を付けるため。"

以上がSpring の @Transactional アノテーションはプライベート メソッドでも機能しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート