通知のアドバイス

注釈ベースのSpring AOP開発 https://www.cnblogs.com/junzi2099/p/8274813.htmlから、

ターゲット・クラス・インタフェースと実装クラスを定義する1

春AOPアスペクトクラスの2書き込み

@Aspect
 パブリック クラスMyAspect {

    / **
     *事前の通知
     * / 
    @Before( "実行(* com.zejian.spring.springAop.dao.UserDao.addUser(..))" 公共 無効(前){
        System.out.println( "アドバイスの前に...." );
    }

    / **
     *アドバイスを返送した後、
     *戻りreturnVal、カットポイント法が実行される値
     * / 
    @AfterReturning(値 = "実行(* com.zejian.spring.springAop.dao.UserDao.addUser(..))"、 "returnVal"を返す= 公共 ボイド{AfterReturning(オブジェクトreturnVal)
        System.out.println( "ポスト予告...." + returnVal)。
    }


    / **
     *周りのアドバイス
     * @Param クラスは、ジョインポイント接点を実行するために使用することができます
     * @return 
     *は@throws のThrowable
      * / 
    @Around( "実行(* com.zejian.spring.springAop.dao.UserDao.addUser(..))" 公衆の周りにオブジェクト(ProceedingJoinPointジョインポイント)がスローのThrowableを{
        System.out.println( "の前に....サラウンド通知" );
        オブジェクトOBJ = (オブジェクト)joinPoint.proceed();
        System.out.println( "サラウンド通知...." );
         を返すOBJ;
    }

    / **
     *通知をスローします
     * @param E
      * / 
    @AfterThrowing(値 = "実行(* com.zejian.spring.springAop.dao.UserDao.addUser(..))"、 "E"を投げる= 公共 ボイドafterThrowable(のThrowable e)を{
        System.out.println( "異常:MSG =" + e.getMessage())。
    }

    / **
     *方法に関係なくはどのような状況下で実施されています
     * / 
    @After(値 = "実行(* com.zejian.spring.springAop.dao.UserDao.addUser(..))" 公共 ボイド後(){
        System.out.println( "最終通知...." )。
    }
}
コードの表示

3.春IOCコンテナ管理に引き渡さ設定ファイルを書きます

<豆のxmlns = "http://www.springframework.org/schema/beans" 
       のxmlns:XSI = "http://www.w3.org/2001/XMLSchema-instance" 
       のxmlns:AOP = "のhttp:// WWW .springframework.org /スキーマ/ AOP " 
       のxmlns:コンテキスト = "http://www.springframework.org/schema/context" 
       のxsi:schemaLocationの =" http://www.springframework.org/schema/beansのhttp:// www.springframework.org/schema/beans/spring-beans.xsd
        http:// www.springframework.org/schema/aop 
        ます。http:// www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/context  のhttp:// WWW .springframework.org /スキーマ/コンテキスト/春-context.xsd 「>

    <! -  @aspectj自動プロキシサポートを開始 - >
    <AOP:AspectJの-自動プロキシ/>

    <! - あなたの聴衆を定義します - >
    <ビーンID = "userDaos" クラス = "com.zejian.spring.springAop.dao.daoimp.UserDaoImp" />
    <! - アスペクトクラスの定義 - >
    <Bean名= "myAspectJ" クラス = "com.zejian.spring.springAop.AspectJ.MyAspect" />
</豆>
コードの表示

テストクラスを書く4。

/ ** 
 * 2017年2月19日にzejianによって作成されます。* / 
@RunWith(SpringJUnit4ClassRunner。クラス
@ContextConfiguration(位置 = "クラスパス:春/スプリングaspectj.xml" パブリック クラスUserDaoAspectJ {
    @Autowired
    UserDao userDao;

    @テスト
    公共 のボイドaspectJTest(){
        userDao.addUser();
    }
}
コードの表示

5.結果

 

 

  


おすすめ

転載: www.cnblogs.com/yunhemeihe/p/12080178.html