【Spring Boot AOP中切入表達式格式介紹】

文章目錄

  • 一、切入表達式簡介
  • 二、切入表達式的語法
    • 1. 方法匹配符
      • 示例:
    • 2. 類型匹配符
      • 示例:

一、切入表達式簡介

切入表達式(Pointcut Expression)是AOP中定義切入點(Pointcut)的一種方式。它定義了在哪些連接點(Join Point)上應用通知(Advice)。在Spring Boot中,切入表達式主要用于:

  • 定義切入點:指定在哪些方法或類上應用通知。
  • 精確匹配:使用通配符和邏輯運算符精確匹配目標方法。

切入表達式通常與通知類型(Advice Type)一起使用,如前置通知、后置通知、環繞通知等,以實現橫切關注點的模塊化管理。


二、切入表達式的語法

1. 方法匹配符

  • execution(modifiers-pattern? return-type-pattern declaring-type-pattern? method-name-pattern(param-pattern) throws-pattern?)

    • modifiers-pattern:方法的訪問修飾符,如publicprotectedprivate等。
    • return-type-pattern:方法的返回類型,如void、具體的類名等。
    • declaring-type-pattern:方法所在類的全限定名或包名模式。
    • method-name-pattern:方法名,支持通配符匹配。
    • param-pattern:方法的參數模式,如(..)表示任意參數,(String, ..)表示第一個參數為String類型,其余任意類型參數。
    • throws-pattern:方法可能拋出的異常模式。

示例:

  • 匹配所有Service接口的所有方法:

    execution(* com.example.service.*.*(..))
    
  • 匹配所有返回類型為String的方法:

    execution(String com.example.service.*.*(..))
    

2. 類型匹配符

除了execution,還有其他類型的切入點表達式:

  • within:匹配指定類型內的所有方法。
  • target:匹配指定目標對象類型的方法調用。
  • args:匹配傳入參數類型符合指定條件的方法。

示例:

  • 匹配所有@Service注解類中的方法:

    @within(org.springframework.stereotype.Service) && execution(* *(..))
    
  • 匹配所有以Service結尾的類及其子包下的方法:

    within(com.example.service..*) && execution(* *(..))
    

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/40317.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/40317.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/40317.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

基于Java中的SSM框架實現物流管理系統項目【項目源碼+論文說明】

基于Java中的SSM框架實現物流管理系統演示 摘要 企業的發展離不開物流的運輸,在一個大型的企業中,商品的生產和建設,推廣只是前期的一些工作,在后期的商品銷售和物流方面的建立,才能讓一個企業得到大力的發展。 企業…

基于Linux/ARM/單片機利用狀態機對多個按鍵進行掃描實現短按或者長按

1)Linux/ARM/單片機入門級按鍵掃描程序設計,分享給將要學習或者正在學習Linux/ARM/單片機開發的同學。 2)內容屬于原創,若轉載,請說明出處。 3)提供相關問題有償答疑和支持。 學習Linux/ARM/單片機的同學…

docker部署簡單的Kafka

文章目錄 1. 拉取鏡像2. 運行創建網絡運行 ZooKeeper 容器運行 Kafka 容器 3. 簡單的校驗1. 檢查容器狀態2. 檢查 ZooKeeper 日志3. 檢查 Kafka 日志4. 使用 Kafka 命令行工具檢查5. 創建和刪除測試主題 1. 拉取鏡像 選擇一組兼容性好的版本。 docker pull bitnami/kafka:3.6…

Facebook:數字社交的引領者與創新者

自2004年誕生以來,Facebook從一個校園網絡項目迅速成長為全球最大的社交媒體平臺,徹底改變了我們與世界互動的方式。作為數字社交的引領者和創新者,Facebook不僅在技術層面上不斷突破,也在社會和文化領域留下了深刻的印記。本文將…

vue2 + element三級菜單實現模板

需求&#xff1a; 需要一個含有三級菜單的結構模板&#xff0c;用于業務快速開發。 解決&#xff1a; sidebar.vue <template><el-menu :default-active"defaultActive" class"el-menu-vertical-demo" active-text-color"#ffd04b"&…

『大模型筆記』2024大模型AI工程師必備技能!

2024大模型AI工程師必備技能! 文章目錄 一. 2024大模型AI工程師必備技能!1. 引言:理解如何在各種應用中使用大語言模型(LLM)2. 第1層:Question answering(Q&A)3. 第2層:Chatbot=Q&A+短期記憶(上下文知識)4. 第3層:RAG=Q&A+短期記憶(上下文知識)+長期記憶(外…

【論文解讀】CVPR2024:DUSt3R: Geometric 3D Vision Made Easy

論文“”https://openaccess.thecvf.com/content/CVPR2024/papers/Wang_DUSt3R_Geometric_3D_Vision_Made_Easy_CVPR_2024_paper.pdf 代碼&#xff1a;GitHub - naver/dust3r: DUSt3R: Geometric 3D Vision Made Easy DUSt3R是一種旨在簡化幾何3D視覺任務的新框架。作者著重于…

Docker的架構原理

例子可以想象成一個買手機的場景 clien可以想象 你個人 docker deamon &#xff1a;店員 images&#xff1a; 樣機 regisitry&#xff1a; 手機倉庫 container: 使用的手機 首先我要在店員買一個手機&#xff0c;店員發現是樣機&#xff0c;但是倉庫有&#xff0c;&…

【SpringBoot3】使用Jasypt加密數據庫用戶名、密碼等敏感信息

一、使用步驟介紹 使用Jasypt&#xff08;Java Simplified Encryption&#xff09;進行數據加密和解密主要涉及幾個步驟&#xff0c;包括引入依賴、配置加密密碼、加密敏感信息、將加密信息存儲到配置文件中&#xff0c;以及應用程序啟動時自動解密。以下是詳細的使用說明&…

11 docker安裝redis

目錄 安裝redis 1. 配置redis配置文件redis.conf 1.1. 找到redis.conf文件 1.2. 配置文件 2. 啟動容器 3. 測試redis-cli連接 4. 證明docker使用的是指定的配置文件 安裝redis 1. 配置redis配置文件redis.conf 1.1. 找到redis.conf文件 宿主機創建目錄/app/redis在/a…

WebXR:Web上的虛擬與增強現實技術

WebXR 是一種允許在網頁上創建虛擬現實 (VR) 和增強現實 (AR) 體驗的技術標準&#xff0c;它結合了WebVR和WebAR的概念&#xff0c;為開發者提供了一個統一的平臺來開發跨平臺的沉浸式Web應用。 WebXR 概述 什么是WebXR&#xff1f; WebXR API 旨在讓瀏覽器成為VR和AR內容的平…

雙非怎么進大廠?

https://www.nowcoder.com/share/jump/2764630231719583704126 大家好&#xff0c;我是白露啊。 今天我們要分享一個非常勵志的故事&#xff0c;它證明了雙非背景的畢業生也可以通過努力和堅持&#xff0c;進入夢想中的大廠。 下面是這位網友的真實經歷&#xff0c;希望能為正…

泰安再見,泰山OFFICE還會再見

路過泰安&#xff0c;遇見彩虹。懷念和感恩在泰山信息科技的萬丈豪情。 泰山OFFICE&#xff0c;還是要復活。

JavaScript Set新增7個方法操作集合

intersection() intersection () 它返回一個包含此集合和給定集合中所有元素的新集合。 const odds new Set([1, 3, 5, 7, 9]);const squares new Set([1, 4, 9]);console.log(odds.intersection(squares)); // Set(2) { 1, 9 }union() union () 它返回一個包含此集合中所有元…

提升Android Studio開發體驗:使用Kelp插件實現顏色和圖標預覽

提升Android Studio開發體驗&#xff1a;使用Kelp插件實現顏色和圖標預覽 在Android開發中&#xff0c;自動補全功能對于提高開發效率至關重要。然而&#xff0c;默認的Android Studio并不能預覽顏色和圖標&#xff0c;這使得開發者在選擇資源時常常感到困惑。本文將介紹如何使…

【C語言小知識】備選拼寫:iso646.h頭文件

備選拼寫&#xff1a;iso646.h頭文件 C語言中有3種邏輯運算符&#xff1a; 邏輯運算符含義&&與||或!非 假設exp1和exp2是倆個簡單的關系表達式&#xff0c;那么 當且僅當exp1和exp2都為真時&#xff0c;exp1 && exp2才為真。如果exp1或exp2為真&#xff0c;…

【學習筆記】Fréchet距離的 C 語言實現

Frchet 距離 Frchet 距離&#xff0c;又稱為弗雷歇距離&#xff0c;是一種衡量兩條曲線&#xff08;或兩個路徑&#xff09;之間相似性的度量方法。這個概念最初在度量空間理論中被定義&#xff0c;后來被廣泛應用于計算機科學、地理信息系統、圖像處理、生物信息學等多個領域…

使用Python實現深度學習模型:遷移學習與領域自適應教程

引言 遷移學習和領域自適應是深度學習中的兩個重要概念。遷移學習旨在將已在某個任務上訓練好的模型應用于新的任務&#xff0c;而領域自適應則是調整模型以適應不同的數據分布。本文將通過一個詳細的教程&#xff0c;介紹如何使用Python實現遷移學習和領域自適應。 環境準備…

Visual Studio常見問題

VS的文件路徑為什么要用雙斜杠(\)? 答:在編程時,寫入文件的路徑如image = cvLoadImage("C:\Users\lyb\Documents),這種寫法在編譯時不會報錯,但在運行時會報錯,報錯圖像讀入為空,這是因為Windows的路徑雖然用的是單斜杠,但在編程時的意義是不同的,單斜杠“\”…

Go語言中的可變參數:靈活而強大的函數參數

Go語言中的可變參數:靈活而強大的函數參數 在Go語言中,可變參數是一種非常有用的特性,它允許函數接受任意數量的參數。這種靈活性使得函數可以更加通用和可復用。本文將深入探討Go語言中可變參數的用法、原理和最佳實踐。 什么是可變參數? 可變參數允許你傳遞零個或多個值給…