Spring AOP 引入增強

2021-07-02 23:14:36 字數 1545 閱讀 9657

上篇部落格寫到了

spring aop

,不管是前置增強,後置增強,引入增強都是對方法的增強,但是是否考慮過對類進行增強呢?!偉大的

spring

做到了,只是換了一種說法:

introduction

(引入)

首先我們來說一下引入增強的目的:動態的讓被增強的類實現乙個介面;下面就寫一下**吧:

定義了乙個新介面

apology:

/**

* 道歉介面

* @author 陳麗娜

* @version 2023年5月27日下午8:15:47

*/public inte***ce apoloy

定義乙個增強類,需要繼承:org.springframework.aop.support.delegatingintroductioninterceptor類並同時實現

apoloygy

介面,需要實現

的方法。

/**

* 引入增強

* @author 陳麗娜

* @version 2023年5月30日下午7:56:35

*/@component

public class greetingintroadvice extends delegatingintroductioninterceptor

implements apoloy

@override

public object invoke(methodinvocation mi) throws throwable

}

我們需要拿以上的類去豐富

greetingimpl

類,那我們需要做什麼呢?看看配置檔案吧:

<?xml version="1.0" encoding="utf-8"?>

你好你好你好呀

測試**:

/**

* 引用增強測試

* @author 陳麗娜

* @version 2023年5月27日下午8:49:38

*/@test

public void springintroductiontest()

執行效果:

其實個人感覺引入增強還是很神奇的,測試中說到一句:向上強轉,這裡就說一下轉型吧:

轉型是在繼承的基礎上而言的,繼承是物件導向語言中,**復用的一種機制,通過繼承,子類可以復用父類的功能,如果父類不能滿足當前子類的需求,則子類可以重寫父類中的方法來加以擴充套件。

那麼向上轉型:子類引用的物件轉換為父型別稱為向上轉型,也就是說將子類物件轉為父類物件(父類物件可以是介面)

這裡的引用增強就是把

greetingimpl

向上轉型成了

apoloy

介面。是不是很神奇呀?!

Spring AOP 前置增強攔截不到

最近在用aop寫乙個在新增操作前統一配置建立人建立時間等基本資訊的功能,但是發現無論如何都攔截不到該有的請求 createbyhandler execution com.isoft.edu.api.serviceimpl.persist id beforeadd beforeadd pointcut...

Spring AOP中 Around增強處理

初次學習spring 的aop,就寫了乙個日誌切面,對控制層的接受和返回請求進行切面。aspect component public class logaspect before log public void dobefore after log public void doafter after...

spring aop 詳細介紹 方法增強

介紹 利用 spring 對方法實現增強 1.定義乙個需要增強的介面 package com.dl.code.service created with intellij idea.日期 2021 2 24 描述 spring練習 這裡面的四個方法 是等待增強的方法 public inte ce us...