spring主要內容之AOP

2022-04-03 15:28:48 字數 1760 閱讀 8610

前兩篇文章講了為了簡化**開發和鬆散耦合,spring分別使用了模板技術和依賴注入技術。這一篇再說下第三種技術,就是面向切面程式設計,簡稱aop。

在程式設計中,存在著一些分散在系統各處的零散操作,比如日誌、事務、安全等。面向切面程式設計是把這些分散於系統各處的零散的操作摘出來,交給spring框架去處理它們和業務方法的關係,開發人員只需要關注系統主要業務邏輯即可。這樣就可以簡化**開發和系統的層次。

aop涉及到兩個基本概念:切點和切面。

首先解釋下切點。可以把切點理解為「被切割出來的點」,在**中體現為乙個方法。

假如要在方法m執行前,執行日誌方法b;在方法m執行後,執行日誌方法a。讀這句話的時候,我們明顯感覺到,方法m被分離了出來,被凸顯了出來。這是因為日誌方法b和日誌方法a的執行,像是在方法m的前後切割了兩刀,把方法m摘了出來。

這裡方法m就稱為切點,因為它被日誌方法b和日誌方法a從業務邏輯流中切割了出來了。

再解釋下切面。可以把切面理解為「用來切割的刀」,在**中體現為乙個方法。上面的例子中,日誌方法b和日誌方法a就是兩個切面。

乙個切面不是僅僅可以用來切割乙個點,而是可以用來切割多個點。

那麼具體的應該如何操作呢?

在spring的配置檔案中,首先要定義切點,用aop:pointcut標籤來定義。aop:pointcut標籤指定了切點對應的方法。

由於乙個切面可以切割多個點,所以aop:pointcut標籤定義的是乙個切點集合(亦即方法的集合),而不僅僅是乙個切點。

然後要定義乙個切面,用aop:aspect標籤和aop:before、aop:after等標籤來定義。

aop:aspect標籤是乙個父標籤,表示切面的集合,其內部包含一組具體的切面,包括前切面、後切面、異常切面等,有集合的概念在裡面。這些具體的切面對應的方法都是屬於同乙個類,這個類在父標籤aop:aspect中指定。

aop:brefore、aop:after等標籤是子標籤,它們指定了具體切面對應的方法。

具體**如下:

package com.zaoren.aspect;

public

class

edgeoperation

public

void

updatelist()

}

user")

public

class

usercontroller

public

usercontroller(userservice uservice)

}

"

edgeoperation

"class="

com.zaoren.aspect.edgeoperation

"/>

"pointcut1

" expression="

execution(public * com.zaoren.controller.*controller.*(..))

"/>

ref="

edgeoperation

">

"readbook

" pointcut-ref="

pointcut1

"/>

"updatelist

" pointcut-ref="

pointcut1

"/>

控制台輸出為:

另外要注意一點,在丟擲異常前,會先執行after切面方法。

spring的主要內容之模板

spring的核心目的是為了簡化 的開發。為此,spring給出了以下幾種策略。1.模板。對於那些經常需要重複編寫的 spring給出了模板化解決方案。比如資料庫訪問的 除了對結果集的處理方式會變化,其他部分的 基本不會有變化,因此spring提供了乙個模板類,用來避免編寫重複部分的 在呼叫模板類的...

1 6 主要內容

本書的主要內容包括三個主要部分,分為程式設計技術 核心分析和專案例項。這些內容合為一體,讀者可以學習到在moblin上進行應用軟體開發的技能,最終目標是開發乙個moblin作業系統發行版。程式設計技術以c語言為基礎,除了簡單講解語法以外,主要是介紹在moblin系統中真正廣泛使用的gobject程式...

1 主要內容

pyqt5 基本視窗控制項 qmainwindow,qwidget,qlabel,qlineedit,等 pyqt5高階元件 qtableview,qlistview,容器,多執行緒等 pyqt5布局管理 qboxlayout,qgridlayout,qformlayout,巢狀布局等 pyqt5訊...