天天看點

Spring之路(42)–Spring AOP是啥?啥時候用?

1. 啥是AOP

啥時AOP,其實是英文Aspect Oriented Programming的簡寫,意思是面向切面程式設計。

那啥是面向切面程式設計呢,舉個例子,現實社會中你管理的公司有很多車輛,有大貨車、有商務車、有叉車、還有垃圾車。

現在有個任務來了,車輛在出發前,必須得登記,那麼應該怎麼做。

是讓每輛車出發前司機去登記麼?要是無人車咋辦?

那肯定是在車出發前,安排門衛登記,或者裝個車牌識别,自動登記了。

看到沒,此時車出發就是一個切面,我們精準的發現既然車都要出門,那每個車出門登記的邏輯都是一樣的,是以可以按一個規則處理。

也就是說,不是在每個車出門的方法裡面寫登記的代碼,而是指定車出門的時候執行登記。

這就是面向切面程式設計,也就是AOP。

2. AOP很重要

Spring世界中,依賴注入和AOP是最重要的組成部分,如果硬要說誰更重要的話,我覺得還是依賴注入,為啥捏,因為Spring程式确實可以不使用AOP,但是不使用依賴注入的Spring程式你見過?

3. 啥時候用AOP

說幾個常見的AOP使用場景:

事務處理。凡是要求幾個更新資料庫的操作必須一起成功一起失敗的時候,必然要加事務。每個加事務的邏輯都一樣,開啟事務、操作資料庫、送出事務、如果有異常復原。這就可以用面向切面程式設計啊,切面就是執行多個更新的方法。

異常統一處理。抛出異常,到處處理,太麻煩了,因為很多異常其實是一個類型的。能不能統一管理?必須能啊,AOP啊,切面就是抛出異常的方法。

方法執行時間統計。有時候項目部署後,想跟蹤下項目中各個方法的運作時間,以便排查執行緩慢消耗系統性能的方法。這就是一個切面啊,你想檢查的那些方法就是切面。

4. 總結

可見AOP就是制定一個規則,然後在符合規則的地方插入我們指定的代碼邏輯。指定的規則就是所謂的切面,是以叫面向切面程式設計。