聲明:請勿直接抄襲,翻譯不易,轉載請註明 http://www.javashuo.com/article/p-okwkfoys-mv.html ,謝謝。html
你瞭解 Spring AOP 嗎?你有在你目前的 Spring Boot 項目中使用它嗎?若是沒有,這篇文章就是爲你準備的!java
最近,我看到不少項目都在使用 Spring Boot 和其餘優秀框架開發的最新技術。一方面,這聽起來是很棒的,可是另外一方面,我常常看到不少開發人員並無充分利用這些新技術的所有有點。web
我認爲主要是由於多數的書和文檔都過於學術化而且晦澀難懂。因此這就是爲何我決定談一談我對面向切面編程(aspect-oriented programming)
的一點理解。
spring
在 OOP 中最小的單元是類(class)
,而在 AOP 中最小的單元是切面(aspect)
。編程
更通俗地講就是,AOP 有助於咱們將不一樣可是有必要的重複性代碼重構爲不一樣的模塊
。這麼作的好處是,咱們能夠將這些重複性代碼集中管理起來複用,而不是每次都要重複寫一遍。框架
這種方法的好處是,代碼將會變得更易於維護,從而將業務邏輯從雜亂的代碼中脫離出來,專一於業務邏輯代碼的開發。咱們將這些不一樣的功能劃分到不一樣的切面中。svg
一個切面是對雜亂地散落在各個類中的橫切關注點的模塊化。好比,集中日誌記錄
或事務管理
就是最好的例子。
模塊化
在這裏,你會意識到有些代碼是於業務邏輯無關的。因此,咱們應該要將它們抽離出來,放到其餘地方,將業務邏輯單獨分出來處理。學習
這麼作的結果就是會致使以下兩個問題:網站
使用 AOP 可以幫助你解決這樣的問題。因此,在這裏 AOP 所作的就是將全部散落各處的事務代碼集中到一個事務切面中。而後,將全部的追蹤代碼(tracing code)集中到一個切面中。最後,將異常處理集中到一個切面中。
至此,就能夠是實現業務邏輯和其餘切面之間的分離。
在經典的面向對象編程中,沒法將它們集中到一個地方統一實現,所以沒法避免代碼糾纏和胡亂交叉。
而面向切面編程則容許你在一個集中的地方實現橫切關注點。因此,若是使用 AOP,那麼將會容許你先實現你的業務邏輯,而後再統一處理橫切關注點的問題。
經過這種方式,你能夠編寫基礎結構並決定是否要將事務或日誌記錄添加到代碼中。所以,你能夠建立本身的中間件。而後,使用 Spring AOP 將這些切面添加到程序中,以便程序處在在運行時
狀態的時候,實際地去執行這些切面和主要的業務邏輯。
若是你看過個人文章《What is Spring framework in java?》,那麼你必定知道 Spring AOP 是 Spring 的核心模塊之一。
Spring AOP 經過消除代碼糾纏和交叉問題,在咱們的項目中支持面向切面的模塊化。將 Spring AOP 庫添加到咱們的項目中,你將會開始體驗到使用它的一些組件所帶來的好處。
這些組件如 註解(annotation)
、建言(advice)
、鏈接點(join points)
、以及切點(point cuts)
。
一般,你會使用 AOP 來實現企業級的功能開發,從而使 Spring 框架更加實用。
AOP 容許你準確地將你所定義的切面集中到特定的地方。所以,你將得到可配置的中間件。若是你想要更加深刻地瞭解 Spring AOP,請繼續關注接下來要發表的文章或這個網站。
原文連接 What Is Spring AOP?
歡迎掃碼關注個人公衆號「蝸牛永動機」,回覆 1024 免費獲取 5G 編程學習資源~