Spring的AOP

johnturingwu發表於2017-02-15

AOP,全稱Aspect—Oriented Programming,面向切面程式設計。
他是一種稱為“橫切”的技術,剖解封裝物件的內部,並將那些影響多個類的公共行為封裝進一個可複用模組(Aspect),即切面,簡單來講,就是將那些與業務無關但是卻需要被業務模組呼叫的邏輯封裝起來,減少重複程式碼,降低耦合度(遵循高內聚,低耦合原則),有利於後續的操作和維護。
AOP代表的是一個橫向的關係,如果說“物件”是一個空心的圓柱體,其中封裝的是物件的屬性和行為;那麼面向切面程式設計的方法,就彷彿一把刀,將這些空心圓柱體剖開,以獲得其內部的訊息。而剖開的面,也就是所謂的“切面”了。然後它又以巧奪天功的妙手將這些剖開的切面復原,不留痕跡。
AOP把軟體系統分為兩個部分:核心關注點和橫切關注點。業務處理的主要流程是核心關注點,與之關係不大的部分是橫切關注點。橫切關注點的一個特點是,他們經常發生在核心關注點的多處,而各處都基本相似。比如許可權認證、日誌、事務處理。Aop 的作用在於分離系統中的各種關注點,將核心關注點和橫切關注點分離開來。

使用範圍:
Transactions 事務
Synchronization 同步
Persistence  持久化
Resource pooling 資源池
等等……

配置:
A、配置可以通過xml檔案來進行,大概有四種方式:
B、配置ProxyFactoryBean,顯式地設定advisors, advice, target等
C、配置AutoProxyCreator,這種方式下,還是如以前一樣使用定義的bean,但是從容器中獲得的其實已經是代理物件
D、通過<aop:config>來配置
E、通過<aop: aspectj-autoproxy>來配置,使用AspectJ的註解來標識通知及切入點

使用見下一篇

相關文章