面向切面程式設計AOP
一、概念:
Aspect Oriented Programming(AOP),面向切面程式設計:
AOP主要實現的目的是針對業務處理過程中的切面進行提取,它所面對的是處理過程中的某個步驟或階段,以獲得邏輯過程中各部分之間低耦合性的隔離效果。比如我們最常見的就是日誌記錄了,舉個例子,我們現在提供一個服務查詢學生資訊的,但是我們希望記錄有誰進行了這個查詢。如果按照傳統的OOP的實現的話,那我們實現了一個查詢學生資訊的服務介面(StudentInfoService)和其實現類(StudentInfoServiceImpl.java),同時為了要進行記錄的話,那我們在實現類(StudentInfoServiceImpl.java)中要新增其實現記錄的過程。這樣的話,假如我們要實現的服務有多個呢?那就要在每個實現的類都新增這些記錄過程。這樣做的話就會有點繁瑣,而且每個實現類都與記錄服務日誌的行為緊耦合,違反了物件導向的規則。那麼怎樣才能把記錄服務的行為與業務處理過程中分離出來呢?看起來好像就是查詢學生的服務自己在進行,但卻是背後日誌記錄對這些行為進行記錄,並且查詢學生的服務不知道存在這些記錄過程,這就是我們要討論AOP的目的所在。AOP的程式設計,好像就是把我們在某個方面的功能提出來與一批物件進行隔離,這樣與一批物件之間降低了耦合性,可以就某個功能進行程式設計。通俗理解:
AOP就是在你編寫程式(大部分是已有的)的基礎上,新增一個路障一樣的東西,當執行到這個路障時就停下,做路障這裡的工作,這樣的話,一個程式就分為幾個不一樣的層面。通過減少程式碼重複模組從而幫助開發人員提高工作效率。定義一套Java語言的擴充套件系統,使開發者可以方便的進行面向方面的開發,這套擴充套件系統被稱為Aspectj。
通過IoC模式(Inversion of Control,控制反轉模式)來實現AOP,通常被稱為Spring AOP
AOP對AspectJ的支援:
使用AspectJ註解:
1,啟用對AspectJ的支援:
通過在Spring的配置中引入下列元素來啟用Spring對AspectJ的支援:
<aop:aspectj-autoproxy />
或者(如果不是使用XSD的話)
<bean class="org.springframework.aop.aspectj.annotation.AnnotationAwareAspectJAutoProxyCreator" />
2,宣告一個帶有@Aspect註解的類,在這個類中宣告那些方法需要被'關注'(利用@Pointcut),在那些時機點進行關注(利用@Before,@AfterReturning等等...),執行'切入'的方法
3,在Spring的配置檔案中定義這個'切面'類:任意帶有一個@Aspect切面(擁有@Aspect註解)的bean都將被Spring自動識別並用於配置在Spring AOP.
4,使用被Spring管理的bean,在執行被'關注'的方法時,'切入'的方法就會被執行.
一個完整的例子參考:http://blog.csdn.net/kkdelta/article/details/5515882
相關文章
- AOP 面向切面程式設計程式設計
- AOP(面向切面程式設計)程式設計
- Java 面向切面程式設計AOPJava程式設計
- AOP--面向切面程式設計程式設計
- 前端js面向切面程式設計(AOP)前端JS程式設計
- Android面向切面程式設計(AOP)Android程式設計
- 設計模式之面向切面程式設計AOP設計模式程式設計
- Android AOP面向切面設計程式設計Android程式設計
- aop面向切面程式設計的實現程式設計
- Java中的面向切面程式設計(AOP)Java程式設計
- 前端解讀面向切面程式設計(AOP)前端程式設計
- Spring之AOP面向切面程式設計Spring程式設計
- 01.AOP(AspectOrientatedProgramming面向切面程式設計)程式設計
- Spring AOP——Spring 中面向切面程式設計Spring程式設計
- Spring AOP(面向切面程式設計)是什麼?Spring程式設計
- 手寫Spring---AOP面向切面程式設計(4)Spring程式設計
- 手寫Spring---AOP面向切面程式設計(3)Spring程式設計
- Spring 面向切面程式設計AOP 詳細講解Spring程式設計
- JS實現AOP 面向切面程式設計 (裝飾者模式)JS程式設計模式
- Spring Boot實戰系列(3)AOP面向切面程式設計Spring Boot程式設計
- Spring之旅第七站:面向切面程式設計(AOP)Spring程式設計
- Day67 Spring AOP(面向切面程式設計) 和代理設計模式Spring程式設計設計模式
- 程式設計思想 面向切面程式設計程式設計
- .NET Core 實現動態代理做AOP(面向切面程式設計)程式設計
- Util應用框架基礎(三) - 面向切面程式設計(AspectCore AOP)框架程式設計
- Spring 面向切面AOPSpring
- Spring-AOP(面向切面)Spring
- React Native面向切面程式設計React Native程式設計
- 【Android】AOP 面向切面程式設計(一) AspectJ 處理網路錯誤Android程式設計
- Spring AOP:面向切面程式設計的核心概念與實際應用Spring程式設計
- 基於SpringBoot AOP面向切面程式設計實現Redis分散式鎖Spring Boot程式設計Redis分散式
- 四、Spring-面向切面程式設計Spring程式設計
- 面向切面程式設計和依賴注入程式設計依賴注入
- Spring框架系列(4) - 深入淺出Spring核心之面向切面程式設計(AOP)Spring框架程式設計
- JAVA_動態代理AOP切面程式設計Java程式設計
- (系列七).net8 Aop切面程式設計程式設計
- 在Javascript中進行面向切面程式設計JavaScript程式設計
- 面向切面程式設計之瘋狂的 Aspects程式設計