oop(物件導向程式設計)提供「從上到下」的關係,而aop(面向方面程式設計)提供一種「橫切」的方式,也可以說是「從左到右」。
簡單來說就是將那些與業務無關,卻為業務模組所共同呼叫的邏輯或責任封裝起來,便於減少系統的重複**,降低模組間的耦合度,並有利於未來的可操作性和可維護性。
可能光是說aop的定義,大家都不太能理解。
舉個例子,比如日誌功能,實現這個功能的**可能是很多類所需要的功能之一,但是如果我們在每乙個類裡都重複新增實現日誌功能的**,將會有很多重複**。
上**(**參考
)
/**
* @description: 業務類
*/public class calculator
public int sub(int i, int j)
public int mul(int i, int j)
public int div(int i, int j)
}
通過切入點,把業務類calculator
「橫向」切開,這樣很好的把業務類和日誌類解耦。
/**
* @description: 日誌切面類,
*/@aspect
public class logaspects ;
//代表在目標方法執行前切入, 並指定在哪個方法前切入
@before("pointcut()")
public void logstart()
//代表在目標方法執行結束之後 ,不管有沒有異常
@after("pointcut()")
public void logend()
//代表在目標方法正常返回值後執行
@afterreturning("pointcut()")
public void logreturn()
//代表在目標方法出現異常後執行
@afterthrowing("pointcut()")
public void logexception()
//動態**,手動執行joinpoint.procced方法(程式執行過程中明確的點,一般指方法的呼叫)
//簡單的來說就是,在目標方法執行之前是前置通知,在目標方法執行之後是後置通知
@around("pointcut()")
public object around(proceedingjoinpoint proceedingjoinpoint) throws throwable
}
/**
* @description: 配置類
*/@configuration
@enableaspectjautoproxy
public class config
@bean
public logaspects logaspects()
}
測試一下
public class test
}
Spring中 事務基礎
事務 事務是什麼?同生共死 事務解決什麼問題?簡單的提乙個小例子,就轉賬,先把你錢扣掉了,但中途發生點不可抗拒的因素,結果沒轉過去,那麼如果沒有回滾,那麼你就白白損失這錢,如果銀行先給那個人轉達了,但中途發生點問題,你的錢沒扣,那銀行損失慘重,所以這就需要事務,要麼都執行,要麼都不執行 事務的四個特...
spring基礎(五) spring事物
一 事務的概念 事物 是使用者定義的一系列操作序列,這些動作要麼都做,要麼都不做,是乙個不可分割的工作單位 事物提交 資料庫向使用者提供儲存當前程式狀態的方法 事物回滾 資料庫忽略當前的狀態並回到前面儲存的狀態的方法 二 事務特性 原子性 一致性 隔離性 永續性 三 spring事務 enablet...
spring中基礎核心介面
spring中基礎核心介面介紹 spring中基礎核心介面總結 理解這幾個介面,及其實現類就可以快速了解spring,具體的用法參考其他spring資料 3.factorybean工廠bean 它本身在bean factory中定義,同時又是用於建立目標bean的工廠 spring有以下實現 1 j...