Spring 框架 AOP的原理及應用

2021-08-25 14:21:55 字數 1773 閱讀 2352

aop 原理:

第一.將複雜的需求分解出不同的方面,將公共功能集中解決。

第二、採用**機制組裝起來執行,在不改變原程式的基礎上對**段進行增強處理,增加新的功能

所謂面向切面程式設計,是一種通過預編譯方式和執行期動態**實現在不修改源**的情況下給程式動態新增功能的技術

aop:

面向切面程式設計,相對於oop切面程式設計

spring 的aop為了解耦,aop可以讓一組類共享相同的行為

spring 支援aspect宣告的註解式切面程式設計

下面的**示例:

為了解決在執行某個方法時,需要切換資料庫

@aspect

@component

public class datasourceaspect

public void setprimarydatasource(joinpoint point)

}

最常見的切面日誌配置

package cn.com.citydo.datawindow.config;

import cn.com.citydo.datawindow.dto.base.baseresponse;

import cn.com.citydo.datawindow.util.annotation.log.logannotation;

import com.alibaba.fastjson.json;

import lombok.extern.slf4j.slf4j;

import org.aspectj.lang.proceedingjoinpoint;

import org.aspectj.lang.annotation.around;

import org.aspectj.lang.annotation.aspect;

import org.springframework.stereotype.component;

/** * 切面日誌配置

* * @author yss

*/@slf4j

@aspect

@component

public class controlleraspect ", sb);

log.info("請求引數 : " + json.tojson(joinpoint.getargs()));

// 後置通知獲取返回結果集,proceed()方法只可調一次,否則會重複執行業務服務

object responseobj = joinpoint.proceed();

// 計算服務端介面耗時,單位毫秒

long costtime = system.currenttimemillis() - start;

// 響應結果為baseresponse時新增方法名

baseresponse response;

if (responseobj instanceof baseresponse) else

// 後置通知記錄返回物件

log.info("結束呼叫方法:{}, 耗時:{}ms", sb, costtime);

log.info("呼叫結果 : " + json.tojson(responseobj));

// 結束切面

return response;

}}

1) @aspect  宣告乙個切面

2) @component 讓此切面成為spring 容器管理的bean

3) @pointcut 註解宣告切點

Spring框架AOP原理

aop aspect oriented programming 意思就是面相切面程式設計。通俗來說就是一種在通過預編譯方式和執行期間動態 實現程式功能的統一維護的一種技術,這種在執行時,動態的將 切入到類的指定方法 指定位置上的程式設計思想就是面向切面程式設計,aop通過一系列的 來實現的。說到底,...

Spring框架的AOP實現原理及常見的例子

spring ioc預設的都是原生物件 動態建立原生物件 只有通過aop增強的物件才是 物件 動態建立 物件 ioc建立的物件是單例的 aop的物件是用一次建立一次 async transactional cacheable等註解標註的方法都會被spring中的aop建立動態 物件 那麼aop建立動...

Spring框架 AOP細節

知己海記憶體 2016 11 24 10 17 1切入點表示式 1.1作用 通過表示式的方式定位乙個或多個具體的連線點。1.2語法細節 切入點表示式的語法格式 execution 許可權修飾符 返回值型別 簡單類名 全類名 方法名 引數列表 舉例說明 表示式execution com.atguigu...