春の研究ノート2

トランザクションを実装するために使用した注釈(宣言的トランザクション)
対象:いずれか、次のすべての方法でトランザクションが成功するか、すべての3つの失敗

  1. ジャーパッケージ
    春- tx-4.3.9.RELEASE取引
    ojdbc.jar
    データに接続コモンズ-dbcp.jarソースが使用してプール
    コモンズ-pool.jarを接続プール
    春JDBC-4.3.9.RELEASE.jar
    aopalliance.jar

  2. 設定
    はjdbc \ MyBatisの\春の
    増加トランザクションTXの名前空間

<!-- 增加对事务的支持 -->
<tx:annotation-driven transaction-manager="txManager"  />
  1. 使用

前者は取引方法ノートを増加する必要があります:
@Transactional(読み取り専用= falseを、伝播= Propagation.REQUIRED)

AOP:アスペクト指向プログラミング

通常のクラスの特定の機能クラスに
。継承されたクラスB。インタフェースCを実装します。注釈D。の設定

public class MyFilter exntends/implements Xx
{

}

「通知」へのクラス:インターフェイスを実装

事前通知の実装手順:


  1. aopaliance.jar
    aspectjweaver.jar

  2. コンフィギュレーション

  3. 調製
    AOP:前に自動的に追加()メソッドログの前に毎回実行();
    addStudent();ビジネス方法(()内addStudent IStudentService.java)
    ()の前に、通知、すなわち、事前通知AOPは、自動的に実行されます

public class Xxx
{
	@Test
	a(){}
}

例外が発生した場合:類似します。java.lang.NoClassDefFoundError:orgの/ apacheの/コモン/プール/ IMPL / GenericObjectPoolを
それは瓶の欠如を示し、

アドバイスを返す後:

  1. 通知クラス、通常の実装インタフェース
  2. トラフィッククラス、ビジネスメソッド
    addStudentでStudentServiceImpl()
  3. 構成:
    トラフィッククラス、springIOC通知容器に
    定義されたエントリポイント(エンド)、クラス通知(他端)の定義、ポイントカット-REF接続端によって

例外通知:
定義により、異常通知インターフェイスを見つけることができ、実装クラスの例外通知は、次のメソッドを記述する必要があります。

	public void afterThrowing([Method, args, target], ThrowableSubclass)	
	public void afterThrowing(Method, args, target, ThrowableSubclass)
	public void afterThrowing( ThrowableSubclass)

アドバイス周り:例外が発生したときにターゲットメソッドの前と後に、最終の通知などは、様々な場所で行うことができる最も強力な通知の;
あなたは、実行後、実行前に、ターゲット・メソッドかどうか(ターゲットメソッドの完全な制御を取得することができ、パラメータ、戻り値、など)

  • アドバイスを周りに使用している場合、すべての情報は、ターゲットメソッドを介して使用できますinvocation取得パラメータ
  • 通知は、サラウンドインターセプタ達成します。

実装上の注意通知を実装し、AOP

  1. jarファイル
    と同じインターフェイスを達成する方法

  2. 設定
    ビジネスクラス、通知がspringIOCコンテナに含ま
    オープン用のAOPサポートをコメント<aop:aspectj-autoproxy></aop:aspectj-autoproxy>
    ビジネスクラスaddStudent -通知を

  3. 書き込み

通知:

@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

戻り値の形でノート:

  1. リターン・パラメータ値の名前を宣言します。
@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フォームを
公開された41元の記事 ウォンの賞賛1 ビュー553

おすすめ

転載: blog.csdn.net/qq_41620020/article/details/105106605