1. 程式人生 > >淺談spring中AOP以及spring中AOP的註解方式

淺談spring中AOP以及spring中AOP的註解方式

早就 好的 面向 XML ram ati alt 返回 增強

  AOP(Aspect Oriented Programming):AOP的專業術語是"面向切面編程" 什麽是面向切面編程,我的理解就是:在不修改源代碼的情況下增強功能.好了,下面在講述aop註解方式的情況下順便會提到這一點.

一、搭建aop註解方式的環境(導入以下的包)

技術分享

二、實現

  環境搭建好了之後,就創建項目。

  1.創建接口類(CustomerDao)並添加兩個方法

技術分享

  2.接口類創建好了後,自然是要new一個實現類(CustomerDaoImpl)並實現接口中的方法

  技術分享

  3.以上基礎工作做完後,我們要用到springIOC的思想,將customerDaoImpl類交給spring管理

    在src目錄下創建名為 applicationContext.xml 的xml文件技術分享

    bean是一個spring中的標簽對, 你可以理解為一個小物品,id就是你取的名字,但是一般都是類名然後首字母小寫, class中添加的是類的全路徑

    開啟自動註解/代理:只有開啟了自動代理 ,我們接下來所編寫的註解才有真正的應用

      技術分享

  4.環境和基礎類都編寫完成,接下來可以創建一個Demo類用於實現

  技術分享

首先我們需要將存在spring容器中的CustomerDaoImpl類拿出來

  代碼‘‘1‘和‘2‘就是做這個事情的。

    ‘1‘中顧名思義,你得告訴它從哪裏拿,所以要給一個路徑

    ‘2‘中就是註解的方式,叫依賴註入:將xml文件中早就寫好的類註入給字段customerDao,@Resource中的name就是指之前bean中的id值

 接下來就是測試了(需要添加代碼‘3‘‘4‘),編寫一個run1()[email protected],[email protected]行,這就是單元測試了,很方便。

  有了前面的鋪墊後,執行了run1方法後就可以顯示實現類中的兩行輸出了

三、aop切面類

  1.創建切面類MyAspectAnno.java(在配置文件中添加一個bean,繼續交給spring管理)

技術分享

 2.添加需要增強的功能方法

技術分享

   value中的代碼是表達式, public 後的*是指任何類型的返回值都可以, save()是指在哪裏增強或者說在哪裏添加功能,這些代碼寫完後就是指 在save()執行後會執行 [email protected],即after() 這就是增強了

但是當我們多寫幾個通知(環繞通知,前置通知等等)每次都要添加表達式的代碼,復制粘貼也很麻煩,這裏我們可以添加一個切入點,實現如下:

技術分享

  以後我們只需要這樣做就行了,下面添加了一個環繞通知:

  技術分享

      

  value值不再是很長的表達式了,也方便以後的維護

技術分享

上圖已經很明確的說明了我們成功實現了功能的增強,利用aop思想並用註解的方式(我們所添加的通知分別在切入點(save())的之後和環繞著執行了)

   

淺談spring中AOP以及spring中AOP的註解方式