aop java,AOP 基本術語及其在 Spring 中的實現

 2023-11-18 阅读 27 评论 0

摘要:無論是 Spring 還是其他支持 AOP(Aspect Oriented Programming)的框架,尤其是 Spring 這種基于 Java(徹底的面向對象)的語言,在實現 AOP 時,首先為 AOP 這一編程思想,定義一些基本概念,基本術語,基本流

無論是 Spring 還是其他支持 AOP(Aspect Oriented Programming)的框架,尤其是 Spring 這種基于 Java(徹底的面向對象)的語言,在實現 AOP 時,首先為 AOP 這一編程思想,定義一些基本概念,基本術語,基本流程。

1. AOP 術語

  • Advice:通知。用于修飾某個方法(代表業務),切面是獨立于業務的的。AOP 就是盡可能降低目標方法和切面的耦合關系。

    • 切面的目標 —— 必須要完成的工作。切面的工作就被稱為通知;
    • aop java、通知定義了什么是切面(what),也即切面的工作(職責所在),還描述了何時(when)執行這個工作,

      時序上,Spring 切面支持如下 5 種類型的通知:

      • 前置(型)通知(Before),在目標方法被調用之前調用通知功能;
      • 后置(型)通知(After),在目標方法完成之后(不保證成功還是拋異常)調用通知,此時不會關心方法的輸出是什么?
      • 返回(型)通知(After-returning),在目標方法成功執行之后調用通知;
      • 異常(型)通知(After-throwing),在目標方法拋出異常之后調用通知;
      • 環繞(型)通知(Around),通知包裹了被通知的方法,在被通知的方法調用之前和調用之后執行自定義的行為;
  • 連接點(Join point):連接點是在應用執行過程中,能夠插入切面的一個點。
    • 這個點可以是在調用方法時,拋出異常時,甚至修改一個字段時;
    • 切面代碼可以利用這些點插入到應用的正常流程中,并添加新的行為;
  • Pointcut(切點),通知定義了切面的“什么”(what)和“何時”(when)的話,那么切點就定義了位置(where,何處)
    • 切點(切入點),其定義會去匹配所要織入(weaving)的一個或多個連接點,
  • 切面(Aspect):通知和切點共同定義了切面的全部內容;
    • 它是什么,在何時何處完成其功能;

2. Spring 對 AOP 的支持

并非所有的 AOP 框架都是相同的,它們在連接點模型(Join Point Model)上可能有強弱(程度)之分。有些允許在字段修飾符級別應用通知,而另一些只支持與方法調用相關的連接點。它們被織入(weaving)切面的方式和時機(timing)也有所不同。但是無論如何不同和變化,在實現方式上,創建切點(poincut)來定義切面所織入的連接點是 AOP 框架的基本功能。

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/4/176055.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息