初窺AOP(學習筆記)

2021-10-08 03:31:44 字數 1314 閱讀 9185

aop為 aspect oriend programming的縮寫,意思為面向切面程式設計,是通過預編譯方式和執行期動態**實現程式功能的統一維護的一種技術。

aop是oop的延續,是軟體開發中的乙個熱點,也是spring框架中的乙個重要內容,是函式式程式設計的一種衍生范型。利用aop可以對業務邏輯的各個部分進行隔離,從而使得業務邏輯各個部分之間的耦合度降低,提高程式的可重用性,同時提高了開發的效率。

實際上, aop的底層是通過spring提供的動態**技術實現的。在執行期間,spring通過動態**技術動態的生成**物件,**物件方法執行時進行增強功能的介入,在去呼叫目標物件的方法,從而完成功能的增強。

常用的動態**技術

首先我們先建立乙個target介面

然後我們去實現方法

我們去建立增強方法(我這邊建立了乙個前置方法,和乙個後置方法,當然方法名稱隨意,但是最好要見名知意)

接下來我們就可以去測試我們的**了

proxy類的放回值是動態生成的**物件,這裡我們要注意的是,無論我們呼叫動態**物件的哪種方法,實質上執行的都是invoke方法。(下面是執行結果圖)

spring的aop實現底層就是對上面的動態**的**進行了封裝,封裝後我們只需要對關注的部分進行**的編寫,並通過配置的方式完成指定目標的方法增強。

讓我們先來看一下aop常用的相關術語:

spring框架監控切入點方法的執行。一旦監控到切入點方法被執行,使用**機制,動態建立目標物件的**物件,根據通知類別,在**物件的對應位置,將通知對應的功能織入,完成完整的**邏輯執行。

在spring中,框架會根據目標類是否實現了介面來決定採用哪種動態**的方式。

深度學習 初窺門徑筆記

深度學習的最終目的是獲取乙個多層的複雜函式,這個函式可以對輸入的值做出相對正確的輸出。比如 輸入乙個小貓的,函式經過運算輸出 這是乙隻貓 輸入乙個小狗的,函式經過運算輸出 這是乙隻狗 但是,用單個簡單函式很難得到這樣的效果,那麼聰明的人類就想到了 人的大腦神經網路不是簡單構成複雜的例項嗎?人的大腦神...

Scrapy 初窺筆記

scrapy startproject yourprojectname 建立scrapy專案 開始爬蟲 scrapy crawl spidername 開始執行爬蟲 以上仿麻煩 根目錄新建執行檔案 from scrapy.cmdline import execute execute scrapy c...

機器學習門徑初窺

機器學習概述 1.什麼是機器學習呢?所謂機器學習,從我的理解來看就是指給定一些樣本資料,通過對樣本資料提取特徵 feature 通過對這些特徵進行分析並得到一些規律,然後通過這些規律來 一些未知的事情。2.機器學習的價值是什麼呢?個人認為機器學習的價值就在於通過對一大堆無序的資料抽取規律,並用於解釋...