第一章 AOP,第一章aop

來源:互聯網
上載者:User

第一章 AOP,第一章aop

關於AOP,通常我們會使用AspectJ註解來做,共有6中切面

  • 前置:@Before
  • 後置:@After
  • 傳回值:@AfterReturing
  • 異常:@AfterThrowing
  • 環繞:@Around:可以理解為以上四種的集合
  • 引用(不常用)

比較難理解的兩個部分:

  • 連接點:JoinPoint、ProceedJoinPoint
    • 連接點其實就是切面運算式覆蓋的方法,根據該連接點可以擷取多個資訊,常用的如下:
      • getSignature():擷取當前方法的傳回值、全類名、參數類型,例:Shop com.xxx.firstboot.dao.ShopDao.getShop(int)
      • getTarget():擷取當前方法所屬的類執行個體,例:com.xxx.firstboot.dao.ShopDao@72f97c4f
      • getArgs():擷取當前方法的參數,例:[Ljava.lang.Object;@6fbd538a
    • JoinPoint習慣性的用在除了@Around中,ProceedJoinPoint習慣性的用在@Around中(因為需要使用ProceedJoinPoint的proceed()方法進行目標方法的執行)
  • 切點運算式:
    • execution(* com.xxx.firstboot.dao.*.*(..))只需要記住這一個就可以
      • 第一個*:代表任意許可權和傳回型別,例:public Shop,如果需要明確指定,就指定
      • 第二個*:代表這個包下的所有類,例:ShopDao,如果需要明確指定,就指定
      • 第三個*:代表類下的所有方法,例:getShop,如果需要明確指定,就指定
      • ..:代表方法的入參類型可以是任意類型、任意數量(包括0個)的,例:int,如果需要明確指定,就指定
    • 切點運算式就是方法(連接點)的匹配運算式

兩個補充點:

    • 多個切面可以通過@Order(數字)這個註解來制定織入順序,例:@Order(1),數字越小,越先織入,該註解用在切面上(即切面類上)
    • 切點運算式可以重用,如下會示範

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.