春のサービスノート

1:トランザクション方法Aがある場合、次のコードに示すように、同じクラスでは、B法は、トランザクション(伝播= Propagation.REQUIRES_NEW)を有しています。

@Override 
@Transactional
公共ボイドinsertUser(ユーザーユーザー、製品グッズ){
userMapper.insert(ユーザー)
のtry {
}キャッチ(例外e){
}
}


@Override
@Transactional(=伝播Propagation.REQUIRES_NEW)
公共ボイドinsertGoods(グッズグッズ)例外{スロー
goodsMapper.insert(製品);
スロー新しい新しい例外(「SADF」);
}

Bがデータに挿入される場合は、トランザクションのロールバックがありません。

2:春のトランザクションの実装メカニズム:春のトランザクションがAOPの原理を使用して実装され、実際には、ダイナミックな薬剤である、エージェントの役割は、ダイナミック強調方法を達成することです。
動的プロキシ二つの重要なクラスが必要です。プロキシとのInvocationHandler
プロキシ:新しいオブジェクトの責任
のInvocationHandler:強化のための

注意事項:@Auword、だけでなく、プロキシモードを達成するために3

春のコンテナが起動しているような演技、すべてのクラスは、すべてのスキャンが、発見後にコメントを追加するときに、この方法は、キー値として注釈され、地図<キー、リスト<バリュー>>

インターセプタに対応する異なるノートは同じではありません

4:1のアプリケーションクラスにアノテーションを追加し、springbootプロジェクトで、問題を解決するために  @EnableAspectJAutoProxy(真exposeProxy =)

エージェントがトランザクションを達成するために、実装の拡張方法の前後に、動的とすることができるので、そのメソッドB:プロセスは、その後、Aの方法で実施されます。

@Override 
@Transactional
公共ボイドinsertUser(ユーザーのユーザー、製品品){
userMapper.insert(ユーザ)。
試す{
IUserServiceサービス=(IUserService)AopContext.currentProxy();
service.insertGoods(財);
}キャッチ(例外e){
}
}


@Override
@Transactional(伝播= Propagation.REQUIRES_NEW)
公共ボイドinsertGoods(雑貨品)例外{スロー
goodsMapper.insert(財)。
新しい例外(「SADF」)を投げます。
}

 















おすすめ

転載: www.cnblogs.com/jelly12345/p/11963896.html