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

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

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

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?) 

括號中各個(gè)pattern分別表示:

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

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

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的定義包括兩個(gè)部分:Pointcut表示式(expression)和Pointcut簽名(signature)

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

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

如下:

@Before("og()")

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

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

Pointcut定義時(shí),還可以使用&&、||、! 這三個(gè)運(yùn)算

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

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

還可以將一些公用的Pointcut放到一個(gè)類中,以供整個(gè)應(yīng)用程序使用,如下:

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時(shí),指定完整的類名加上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());
}
}

當(dāng)基于XML Sechma實(shí)現(xiàn)Advice時(shí),如果Pointcut需要被重用,可以使用<aop:pointcut></aop:pointcut>來聲明Pointcut,然后在需要使用這個(gè)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表示式

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

相關(guān)文章

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

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

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

    詳解Java適配器模式

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

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

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

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

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

    一文帶你詳細(xì)認(rèn)識文件與Java中操作文件

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

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

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

    java分頁攔截類實(shí)現(xiàn)sql自動(dòng)分頁

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

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

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

    SpringBoot異常處理機(jī)制使用詳解

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

    Java中的this和super實(shí)例淺析

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

最新評論

阿瓦提县| 凉城县| 娱乐| 衡水市| 寿宁县| 分宜县| 九寨沟县| 齐齐哈尔市| 罗城| 濉溪县| 民勤县| 资中县| 松潘县| 监利县| 岳普湖县| 西丰县| 镇江市| 邹平县| 托克托县| 广安市| 河间市| 勐海县| 伊金霍洛旗| 盐亭县| 望谟县| 兰州市| 赫章县| 沽源县| 六枝特区| 汕头市| 紫阳县| 佛学| 天津市| 遵义县| 广宗县| 府谷县| 株洲市| 修武县| 运城市| 宜昌市| 旬邑县|