
- Spring核心基礎
- Spring - 首頁
- Spring - 概述
- Spring - 架構
- Spring - 環境搭建
- Spring - Hello World示例
- Spring - IoC容器
- Spring - Bean定義
- Spring - Bean作用域
- Spring - Bean生命週期
- Spring - Bean後處理器
- Spring - Bean定義繼承
- Spring - 依賴注入
- Spring - 注入內部Bean
- Spring - 注入集合
- Spring - Bean自動裝配
- 基於註解的配置
- Spring - 基於Java的配置
- Spring - Spring中的事件處理
- Spring - Spring中的自定義事件
- Spring - Spring框架下的AOP
- Spring - JDBC框架
- Spring - 事務管理
- Spring - Web MVC框架
- Spring - 使用Log4J進行日誌記錄
- Spring問答
- Spring - 問答
- Spring常用資源
- Spring - 快速指南
- Spring - 常用資源
- Spring - 討論
Spring框架下的AOP
Spring框架的關鍵組成部分之一是面向方面程式設計 (AOP) 框架。面向方面程式設計需要將程式邏輯分解成不同的部分,稱為所謂的關注點。跨越應用程式多個點的函式稱為橫切關注點,這些橫切關注點在概念上與應用程式的業務邏輯是分開的。日誌記錄、審計、宣告式事務、安全、快取等是各種常見的方面示例。
OOP中的模組化關鍵單元是類,而在AOP中,模組化單元是方面。依賴注入幫助你解耦應用程式物件,而AOP幫助你解耦與之相關的橫切關注點。AOP就像Perl、.NET、Java等程式語言中的觸發器。
Spring AOP模組提供攔截器來攔截應用程式。例如,當執行方法時,你可以在方法執行之前或之後新增額外的功能。
AOP術語
在我們開始使用AOP之前,讓我們熟悉AOP的概念和術語。這些術語並非Spring特有的,而是與AOP相關的。
序號 | 術語與描述 |
---|---|
1 |
方面 這是一個模組,它具有一組提供橫切需求的API。例如,日誌記錄模組將被稱為用於日誌記錄的AOP方面。應用程式可以根據需要擁有任意數量的方面。 |
2 |
連線點 這表示可以在應用程式中插入AOP方面的位置。你也可以說,這是應用程式中使用Spring AOP框架執行操作的實際位置。 |
3 |
通知 這是在方法執行之前或之後要執行的實際操作。這是由Spring AOP框架在程式執行期間呼叫的實際程式碼段。 |
4 |
切點 這是一組一個或多個連線點,其中應該執行通知。你可以使用表示式或模式來指定切點,正如我們將在AOP示例中看到的那樣。 |
5 |
引入 引入允許你向現有類新增新的方法或屬性。 |
6 |
目標物件 被一個或多個方面建議的物件。此物件始終是代理物件,也稱為建議物件。 |
7 |
織入 織入是將方面與其他應用程式型別或物件連結以建立建議物件的程序。這可以在編譯時、載入時或執行時完成。 |
通知型別
Spring方面可以與以下五種通知一起使用:
序號 | 通知與描述 |
---|---|
1 |
before 在方法執行之前執行通知。 |
2 |
after 在方法執行之後執行通知,無論其結果如何。 |
3 |
after-returning 僅當方法成功完成時,才在方法執行後執行通知。 |
4 |
after-throwing 僅當方法透過丟擲異常退出時,才在方法執行後執行通知。 |
5 |
around 在呼叫建議方法之前和之後執行通知。 |
自定義方面實現
Spring支援@AspectJ註解樣式方法和基於模式的方法來實現自定義方面。以下部分詳細解釋了這兩種方法。
序號 | 方法與描述 |
---|---|
1 | 基於XML模式的
方面是使用常規類以及基於XML的配置來實現的。 |
2 | 基於@AspectJ的
@AspectJ是指將方面宣告為使用Java 5註解進行註釋的常規Java類的一種樣式。 |