SpringのAOPのクイックスタート

高速春AOPの実装クラスを書きます

1.注釈が@ServiceのSpringコンテナを追加使用して、トラフィッククラスを定義します。
@Service
publicクラスがMyService {
  公共の文字列を印刷(){
    System.out.printlnは( "印刷...");
    リターン"エンド";
  }
}

1.アノテーションを使用してアスペクトクラスを定義し、このようなカットラベル@Aspectとして@Component Springコンテナを、追加クラスを表し、通知の種類を標識するための方法に関する。

通知タイプ

  • アドバイスの前に
  • アドバイスを返送した後、
  • ニュースに戻ります
  • 異常の通知
  • アドバイスアラウンド

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

  @Pointcut( "実行(* com.xxx.MyService。*(..))")
  公共ボイドポイントカット(){
  }

  @Before( "ポイントカット()")
  公共ボイド開始(){
    System.out.printlnは( "前置通知")。
  }

  @After( "ポイントカット()")
  公共ボイド端(){
    System.out.printlnは( "后置通知")。
  }

  @AfterReturning( "ポイントカット()")
  公共ボイドreturnStart(){
    System.out.printlnは( "返回通知")。
  }

  ( "ポイントカット()")@AfterThrowing
  公共ボイドexceptionStart(){
    System.out.printlnは( "异常通知")。
  }

  @Around( "ポイントカット()")
  パブリックオブジェクトstartAround(ProceedingJoinPointジョインポイント)がThrowableを{スロー
    するSystem.out.printlnを( "环绕通知开始")。
    オブジェクト進む= joinPoint.proceed(joinPoint.getArgs())。
    System.out.println( "环绕通知结束" +進みます)。
    進んで返します。
  }
}
1.定义启动类
@EnableAspectJAutoProxy
@ComponentScan
パブリッククラスアプリ{
  パブリック静的無効メイン(文字列[] args){
    AnnotationConfigApplicationContextコンテキスト=新しいAnnotationConfigApplicationContext(App.class)。

    たMyServiceサービス= context.getBean(MyService.class)。
    System.out.println( "启动");
    文字列の印刷= service.print()。
    System.out.println(印刷)。

  }
}

輸出

開始
開始するにはアドバイスの周りに
事前通知
...印刷を
通知エンドの終わり頃
通知がポスト
知らせるために返された
終了

おすすめ

転載: www.linuxidc.com/Linux/2019-08/159929.htm