トランザクションを実装するために使用した注釈(宣言的トランザクション)
対象:いずれか、次のすべての方法でトランザクションが成功するか、すべての3つの失敗
-
ジャーパッケージ
春-tx
-4.3.9.RELEASE取引
ojdbc.jar
データに接続コモンズ-dbcp.jarソースが使用してプール
コモンズ-pool.jarを接続プール
春JDBC-4.3.9.RELEASE.jar
aopalliance.jar -
設定
はjdbc \ MyBatisの\春の
増加トランザクションTXの名前空間
<!-- 增加对事务的支持 -->
<tx:annotation-driven transaction-manager="txManager" />
- 使用
前者は取引方法ノートを増加する必要があります:
@Transactional(読み取り専用= falseを、伝播= Propagation.REQUIRED)
AOP:アスペクト指向プログラミング
通常のクラスの特定の機能クラスに
。継承されたクラスB。インタフェースCを実装します。注釈D。の設定
public class MyFilter exntends/implements Xx
{
}
「通知」へのクラス:インターフェイスを実装
事前通知の実装手順:
-
瓶
aopaliance.jar
aspectjweaver.jar -
コンフィギュレーション
-
調製
AOP:前に自動的に追加()メソッドログの前に毎回実行();
addStudent();ビジネス方法(()内addStudent IStudentService.java)
()の前に、通知、すなわち、事前通知AOPは、自動的に実行されます
public class Xxx
{
@Test
a(){}
}
例外が発生した場合:類似します。java.lang.NoClassDefFoundError:orgの/ apacheの/コモン/プール/ IMPL / GenericObjectPoolを
それは瓶の欠如を示し、
アドバイスを返す後:
- 通知クラス、通常の実装インタフェース
- トラフィッククラス、ビジネスメソッド
addStudentでStudentServiceImpl() - 構成:
トラフィッククラス、springIOC通知容器に
定義されたエントリポイント(エンド)、クラス通知(他端)の定義、ポイントカット-REF接続端によって
例外通知:
定義により、異常通知インターフェイスを見つけることができ、実装クラスの例外通知は、次のメソッドを記述する必要があります。
public void afterThrowing([Method, args, target], ThrowableSubclass)
public void afterThrowing(Method, args, target, ThrowableSubclass)
public void afterThrowing( ThrowableSubclass)
アドバイス周り:例外が発生したときにターゲットメソッドの前と後に、最終の通知などは、様々な場所で行うことができる最も強力な通知の;
あなたは、実行後、実行前に、ターゲット・メソッドかどうか(ターゲットメソッドの完全な制御を取得することができ、パラメータ、戻り値、など)
- アドバイスを周りに使用している場合、すべての情報は、ターゲットメソッドを介して使用できます
invocation
取得パラメータ - 通知は、サラウンド底でインターセプタ達成します。
実装上の注意通知を実装し、AOP
-
jarファイル
と同じインターフェイスを達成する方法 -
設定
ビジネスクラス、通知がspringIOCコンテナに含ま
オープン用のAOPサポートをコメント<aop:aspectj-autoproxy></aop:aspectj-autoproxy>
ビジネスクラスaddStudent -通知を -
書き込み
通知:
@Aspect //声明该类 是一个 通知
public class LogBeforeAnnotation {
}
注:コメントフォームはIOCコンテナに増加させ、あなたはスキャナオブジェクトを設定する必要があります
<context:component-scan base-package="org.lanqiao.aop"></context:component-scan>
-
スキャナパッケージが指定されます
@Componet
@Service
@Respository
@Controller
修飾IOCコンテナを生成するために、オブジェクトのクラスを増加させ
@Aspect
、スキャナを添加せずにのみ有効にすることができます。<aop:aspectj-autoproxy></aop:aspectj-autoproxy>
-
あなたがターゲットオブジェクトのいくつかのパラメータを取得したい場合は、AOPの形でノートを通じて達成、あなたがオブジェクトを使用する必要があります。
JointPoint
戻り値の形でノート:
- リターン・パラメータ値の名前を宣言します。
@AfterReturning( pointcut= "execution(public * addStudent(..))" ,returning="returningValue" )
public void myAfter(JoinPoint jp,Object returningValue) {//returningValue是返回值,但需要告诉spring
System.out.println("返回值:"+returningValue );
-
コメントフォームは、AOPを実現するためにすると、通知のパラメトリック法は、より少ない、以下にする必要があります
-
異常の他のタイプがキャプチャされていない一方で、インタフェースフォーム、注釈、例外の特定の種類のフォームキャプチャのみステートメントを実装します。
カテーテル検査()
クラス別構成変更通知
ベースのSchema
コンフィギュレーション
インターフェイスを実装するために同様の方法
- インタフェースの通知:パブリッククラスLogAfter実装AfterReturningAdvice
- スキーマは、通知:
一般クラスのAの調製public class LogAfter {}
Bの設定クラスに「通知」。
あなたがターゲットオブジェクトの情報を取得したい場合は、次
の注意事項、スキーマ:JoinPoint
インターフェース:メソッドメソッド、オブジェクト[] argsを 、オブジェクトのターゲット
- スキーマ注釈とを除いて、同様の形状を形成する:登録@Afterの形態で使用注釈冗長構成のschmemaフォームを