發表文章

目前顯示的是有「Spring AOP」標籤的文章

Aspect Oriented Programming(AOP) - The first sight

圖片
AOP 是個程式編寫方式,透過允許橫切的方式分離並且模組化,能在不修改程式碼本身就能添加額外的程式碼。接下來介紹 Spring實作的 AOP 與library AspectJ。 圖片出處 www.baeldung.com AOP Aspect - 標準的程式碼功能分散在分散在application中多個位置點,每個aspect專注於特定的橫切功能 Joinpoint - 程式執行過程的的特殊點,例如method 執行、call建構子、參數被指定, etc Advice - 於在特定的joinpoint的aspect中採取行動 Pointcut - match joinpoint的正規表示法,當join point match 的pointcut, 與pointcut相關的特定advice會被直執行 Weaving - 連結aspects 與目標物件來建立advised 物件的process Business Object - 一般的邏輯物件,像是兩個參數相加 public class SampleAdder { public int add(int a, int b) { return a + b; } } Aspect - 能跨多個class的模組化類別 public class AdderAfterReturnAspect { private Logger logger = LoggerFactory.getLogger(this.getClass()); public void afterReturn(Object returnValue) throws Throwable { logger.info("value return was {}", returnValue); } } 以上就是個簡單在物件,當關聯物件return之後,會寫log。此時還沒有任何Spring annotation去做關聯。 Joinpoint - 執行程式中的連接點,例如執行method或處理exception。 在Spring AOP中,JoinPoint通常是在程式執行的時候。 Pointcut - 切入點是個predicate(謂詞是一個會回傳boolean的function)...