學習筆記之SpringAOP

2021-10-04 17:45:57 字數 2156 閱讀 4262

aop即面向切面程式設計,可以說是物件導向程式設計oop的乙個補充和完善。oop允許我們縱向定義縱向的關係(類-屬性-方法),不適合定義橫向關係。例如日誌,許可權等功能,這些功能橫向分布在很多物件之中,這種橫向散布的通用**導致了大量**重複,不利於復用。

aop採用「橫切」技術,剖開物件內部,把那些通用的**封裝成乙個可重用模組,稱為切面。簡單說就是把那些與業務無關,卻被業務模組所共同呼叫的邏輯封裝起來,便於減少系統的重複**,降低模組之間的耦合度,並有利於未來的可操作性和可維護性。

aop把軟體系統分為兩個部分:核心關注點和橫切關注點。業務處理的主要流程是核心關注點,與之關係不大的部分是橫切關注點。橫切關注點的乙個特點是,他們經常發生在核心關注點的多處,而各處基本相似,比如許可權認證、日誌、事物。aop的作用在於分離系統中的各種關注點,將核心關注點和橫切關注點分離開來。

橫切關注點

對哪些方法進行攔截?攔截後做些什麼?這是我們的橫切關注點。

切面通常是乙個類,裡面可以定義切入點和通知,即把橫切關注點抽象為乙個類。

連線點能被攔截插入切面的點,指方法呼叫,方法返回,丟擲異常。

切入點在什麼地方插入切面,使用明確的類或方法指定這些地方。

通知通知就是切面要做的事,如記錄日誌等操作。

織入將切面應用到目標物件並導致**物件建立的過程

引入在不修改**的前提下,在執行期為類動態地新增一些方法或字段

可以通過xml配置檔案的形式,通過對切面,連線點,切入點,通知進行定義來使用aop。也可以通過註解。下面講解常用的註解方式:

第一步,引入相應的jar包或依賴

第二步,在配置檔案中加入以下標籤(springboot專案省略這一步)

//ioc自動掃包

//使用aop註解

第三步,通過@component和@aspect註解定義切面

第四步,通過@pointcut(「」)定義切入點

第五步,使用@before@after@around等註解定義連線點和通知

**如下:

package com.example.demo;

import org.aspectj.lang.joinpoint;

import org.aspectj.lang.proceedingjoinpoint;

import org.aspectj.lang.annotation.around;

import org.aspectj.lang.annotation.aspect;

import org.aspectj.lang.annotation.pointcut;

import org.slf4j.logger;

import org.slf4j.logge***ctory;

import org.springframework.stereotype.component;

@component

@aspect

public

class

logaspect

@around

("allcontroller()"

)public object aroundcontroller

(proceedingjoinpoint proceedingjoinpoint)

catch

(throwable throwable)

logger.

info

("aroundcontroller finish");

return ret;

}}

當訪問localhost:8080/register時控制台輸出:

2020-04

-0220:

39:54.793 info 6432---

[nio-

8080

-exec-

1] com.example.demo.logaspect : aroundcontroller running

2020-04

-0220:

39:54.913 info 6432---

[nio-

8080

-exec-

1] com.example.demo.logaspect : aroundcontroller finish

Spring學習筆記之SpringAOP基礎

aop aspect oriented programming,面向切面程式設計 是一種新的方 是對傳統oop object oriented programming,物件導向程式設計 的補充。aop 的主要程式設計物件是切面 aspect 而切面模組化橫切關注點.在應用 aop 程式設計時,仍然需...

springAOP學習筆記

今天看spring的aop,頭都看暈了 切面aspect,連線點joinpoint 切入點pointcut,proxy,通知advice,前置通知before advice 後置通知after advice,異常通知after throwing advice 最終通知 after finally a...

Spring Aop學習筆記

spring aop 1.選擇連線點 比如 1.jdk 連線點某個介面的imp方法 乙個介面roleservice有個方法printrole 有個該介面的實現類roleserviceimp呼叫方法printrole 設定該方法為連線點,在建立切面時定義 系統會為該imp類生成 物件,然後攔截prin...