面向切面編程是什麼。
就指是把邏輯代碼和處理瑣碎事務的代碼分離開,以便能夠分離複雜度。
讓人在同一時間只用思考代碼邏輯,或者瑣碎事務。
代碼邏輯比如是插入一條數據,那麼瑣碎事務就包括獲取連接和關閉連接,事務開始,事務提交。
切面就是指在大堆繁瑣事務中的邏輯代碼。
作用:一是減少重複,二是專注業務。
概念差不多就行了,引用一個網上的例子
你的程序寫好了
現在發現要針對所有業務操作添加一個日誌,
或者在前面加一道權限控制,怎麼辦呢?
傳統的做法是,改造每個業務方法這樣勢必把代碼弄得一團糟
而且以後再擴展還是更亂aop的思想是引導你從另一個切面來看待和插入這些工作日誌,
不管加在哪,它其實都是屬於日誌系統這個角度的
權限控制也一樣
aop允許你以一種統一的方式在運行時期在想要的地方插入這些邏輯
以下是註解標籤
@Aspect: 將一個java類定義為切面類
@Pointcut:定義一個切入點(規則表達式)
根據需要在切入點不同位置的切入內容
@Before:在切入點開始處切入內容
@After:在切入點結尾處切入內容
@AfterReturning:在切入點return之後切入內容(返回值回調,可以用來對處理返回值做一些加工處理)
@Around:在切入點前後切入內容,並自己控制何時執行切入點自身的內容
@AfterThrowing:用來處理當切入內容部分拋出異常之後的處理邏輯
來個demo
閱讀更多 程序員一代碼搬運工 的文章