最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

springboot?aop里的@Pointcut()的配置方式

 更新時間:2021年11月24日 11:03:42   作者:wzng  
這篇文章主要介紹了springboot?aop里的@Pointcut()的配置方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

springboot aop里的@Pointcut()的配置

@Pointcut("execution(public * com.wangzhou.newboot.exception.TestExceptionController.test(String,String))")

com.wangzhou.newboot.exception是TestExceptionController類的全路徑,test(String,String)是TestExceptionController類下的

test(String s,String d)方法

如果要忽略test方法的入?yún)?,所有test方法將被aop

@Pointcut("execution(public * com.wangzhou.newboot.exception.TestExceptionController.test(..))")

如果忽略TestExceptionController的方法,所有TestExceptionController下的方法將被aop

@Pointcut("execution(public * com.wangzhou.newboot.exception.TestExceptionController.*(..))")

如果忽略exception路徑下的所有類,不包括exception的子路徑

@Pointcut("execution(public * com.wangzhou.newboot.exception.*.*(..))")

如果忽略newboot路徑下的所有類,不包括newboot的子路徑比如exception里的類,

@Pointcut("execution(public * com.wangzhou.newboot..*.*(..))")

springboot aop @Pointcut的用法

格式:

execution(modifiers-pattern? ret-type-pattern declaring-type-pattern? name-pattern(param-pattern)throws-pattern?) 

括號中各個pattern分別表示:

  • 修飾符匹配(modifier-pattern?)
  • 返回值匹配(ret-type-pattern)可以為*表示任何返回值,全路徑的類名等
  • 類路徑匹配(declaring-type-pattern?)
  • 方法名匹配(name-pattern)可以指定方法名 或者 *代表所有, set* 代表以set開頭的所有方法
  • 參數(shù)匹配((param-pattern))可以指定具體的參數(shù)類型,多個參數(shù)間用“,”隔開,各個參數(shù)也可以用“*”來表示匹配任意類型的參數(shù),如(String)表示匹配一個String參數(shù)的方法;(*,String) 表示匹配有兩個參數(shù)的方法,第一個參數(shù)可以是任意類型,而第二個參數(shù)是String類型;可以用(..)表示零個或多個任意參數(shù)
  • 異常類型匹配(throws-pattern?)
  • 其中后面跟著“?”的是可選項

現(xiàn)在來看看幾個例子:

1)execution(* *(..))  
//表示匹配所有方法  
2)execution(public * com. savage.service.UserService.*(..))  
//表示匹配com.savage.server.UserService中所有的公有方法  
3)execution(* com.savage.server..*.*(..))  
//表示匹配com.savage.server包及其子包下的所有方法 

在Spring 2.0中,Pointcut的定義包括兩個部分:Pointcut表示式(expression)和Pointcut簽名(signature)

//Pointcut表示式
@Pointcut("execution(* com.savage.aop.MessageSender.*(..))")
//Point簽名
private void log(){} 

然后要使用所定義的Pointcut時,可以指定Pointcut簽名

如下:

@Before("og()")

這種使用方式等同于以下方式,直接定義execution表達式使用

@Before("execution(* com.savage.aop.MessageSender.*(..))")

Pointcut定義時,還可以使用&&、||、! 這三個運算

@Pointcut("execution(* com.savage.aop.MessageSender.*(..))")
private void logSender(){}
@Pointcut("execution(* com.savage.aop.MessageReceiver.*(..))")
private void logReceiver(){}
@Pointcut("logSender() || logReceiver()")
private void logMessage(){}

這個例子中,logMessage()將匹配任何MessageSender和MessageReceiver中的任何方法。

還可以將一些公用的Pointcut放到一個類中,以供整個應用程序使用,如下:

package com.savage.aop;
import org.aspectj.lang.annotation.*;
public class Pointcuts {
@Pointcut("execution(* *Message(..))")
public void logMessage(){}
@Pointcut("execution(* *Attachment(..))")
public void logAttachment(){}
@Pointcut("execution(* *Service.*(..))")
public void auth(){}
}

在使用上面定義Pointcut時,指定完整的類名加上Pointcut簽名就可以了,如:

package com.savage.aop;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.*;
@Aspect
public class LogBeforeAdvice {
@Before("com.sagage.aop.Pointcuts.logMessage()")
public void before(JoinPoint joinPoint) {
System.out.println("Logging before " + joinPoint.getSignature().getName());
}
}

當基于XML Sechma實現(xiàn)Advice時,如果Pointcut需要被重用,可以使用<aop:pointcut></aop:pointcut>來聲明Pointcut,然后在需要使用這個Pointcut的地方,用pointcut-ref引用就行了,如:

<aop:config>
  <aop:pointcut id="log" expression="execution(* com.savage.simplespring.bean.MessageSender.*(..))"/>
  <aop:aspect id="logging" ref="logBeforeAdvice">
    <aop:before pointcut-ref="log" method="before"/>
    <aop:after-returning pointcut-ref="log" method="afterReturning"/>
  </aop:aspect>
</aop:config>

另外,除了execution表示式外,還有within、this、target、args等Pointcut表示式

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • 基于IOC容器實現(xiàn)管理mybatis過程解析

    基于IOC容器實現(xiàn)管理mybatis過程解析

    這篇文章主要介紹了基于IOC容器實現(xiàn)管理mybatis過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-07-07
  • 詳解Java適配器模式

    詳解Java適配器模式

    這篇文章主要介紹了Java適配器模式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-03-03
  • idea 多模塊項目依賴父工程class找不到問題的方法

    idea 多模塊項目依賴父工程class找不到問題的方法

    這篇文章主要介紹了idea 多模塊項目依賴父工程class找不到問題的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01
  • 使用spring攔截器實現(xiàn)日志管理實例

    使用spring攔截器實現(xiàn)日志管理實例

    本篇文章主要介紹了使用spring攔截器實現(xiàn)日志管理實例,具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2017-03-03
  • 一文帶你詳細認識文件與Java中操作文件

    一文帶你詳細認識文件與Java中操作文件

    文件處理是任何應用程序的重要部分,Java 提供了許多用于創(chuàng)建、讀取、更新和刪除文件的方法,這篇文章主要給大家介紹了關于認識文件與Java中操作文件的相關資料,需要的朋友可以參考下
    2024-05-05
  • 使用SpringBoot+nmap4j獲取端口信息的代碼詳解

    使用SpringBoot+nmap4j獲取端口信息的代碼詳解

    這篇文章主要介紹了使用 SpringBoot + nmap4j 獲取端口信息,包括需求背景、nmap4j 的相關介紹、代碼說明(含測試代碼、改造后的代碼及參數(shù)說明),還提到了文件讀取方式和依賴引入方式,最終請求能獲取到數(shù)據(jù),需要的朋友可以參考下
    2025-01-01
  • java分頁攔截類實現(xiàn)sql自動分頁

    java分頁攔截類實現(xiàn)sql自動分頁

    這篇文章主要為大家詳細介紹了java分頁攔截類可以實現(xiàn)sql自動分頁,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • SpringMVC實現(xiàn)簡單跳轉方法(專題)

    SpringMVC實現(xiàn)簡單跳轉方法(專題)

    這篇文章主要介紹了SpringMVC實現(xiàn)簡單跳轉方法(專題),詳細的介紹了SpringMVC跳轉的幾種方法,非常具有實用價值,需要的朋友可以參考下
    2018-03-03
  • SpringBoot異常處理機制使用詳解

    SpringBoot異常處理機制使用詳解

    SpringBoot異常處理基于Servlet與Spring框架,通過ErrorAttributes、ErrorViewResolver、BasicErrorController協(xié)作實現(xiàn)統(tǒng)一異常響應,企業(yè)級應用需標準化異常體系,統(tǒng)一響應格式,優(yōu)化性能與安全,如隱藏堆棧信息,確保日志上下文
    2025-08-08
  • Java中的this和super實例淺析

    Java中的this和super實例淺析

    要說this和super就不得不說Java的封裝和繼承了。這篇文章主要介紹了Java中的this和super實例淺析,需要的朋友可以參考下
    2017-03-03

最新評論

文化| 荃湾区| 安化县| 双江| 扎赉特旗| 玉屏| 景东| 贵州省| 钦州市| 出国| 潮州市| 潮州市| 政和县| 彰化市| 灌阳县| 东乡县| 壤塘县| 邯郸市| 铜梁县| 曲松县| 安阳市| 师宗县| 成安县| 荃湾区| 陈巴尔虎旗| 厦门市| 鹤峰县| 罗山县| 潜山县| 浦江县| 嫩江县| 元朗区| 万源市| 莱西市| 克东县| 沙洋县| 江门市| 崇仁县| 玉门市| 晋中市| 会宁县|