【簡說八股】面試官:你知道什么是AOP么?

回答

AOP(Aspect-Oriented Programming),即面向切面編程,是一種編程范式,它的主要思想是將應用程序中的橫切關注點(如日志記錄、性能統計、安全控制等)從業務邏輯中剝離出來,然后通過特殊的方式將這些橫切關注點與業務邏輯進行關聯,從而實現了這些功能的模塊化和重用。

在傳統的面向對象編程中,我們常常會在業務邏輯代碼中夾雜著一些公共的功能,比如日志記錄、事務管理等。而使用AOP,則可以將這些公共功能抽取成獨立的“切面”,然后通過特定的方式將這些切面與業務邏輯進行關聯。這樣一來,業務邏輯代碼就可以更專注于核心的業務功能,而公共功能則可以通過切面的方式進行統一管理和維護。

Spring框架提供了強大的AOP支持,可以通過配置和注解等方式來定義切面和切點,從而實現對業務邏輯的橫切關注點進行統一管理和處理。這樣,開發者可以更專注于業務邏輯的開發,而不必過多地關注公共功能的實現和維護,大大提高了代碼的可維護性和靈活性。

Spring AOP中的各種概念和術語

術語翻譯釋義
Aspect切面切面由切入點和通知組成,包含橫切邏輯的定義和切入點的定義,可以包含不同增強方法,如事務處理和日志處理。
PointCut切入點對連接點進行攔截的條件定義,決定通知應該作用于哪些方法。
Advice通知通過切入點攔截后,在連接點執行的具體行為,即切面的具體行為。
Target目標對象將要被增強的對象,包含主業務邏輯的類對象,或被一個或多個切面所通知的對象。
JoinPoint連接點程序在運行時的執行點,可以是正在執行的方法或正在拋出的異常,Spring中連接點是被攔截到的方法。連接點由方法和相對點兩部分信息確定。
Weaving織入將切面和業務邏輯對象連接起來,創建通知代理的過程。織入可以在編譯時、類加載時、運行時完成,靜態代理和動態代理都屬于織入的方式。
Before Advice前置通知在連接點執行前執行的邏輯。
After returning advice返回通知連接點正常執行(未拋出異常)后執行的邏輯。
After throwing advice異常通知連接點拋出異常后執行的邏輯。
After finally advice最終通知無論連接點是否正常執行或拋出異常,在連接點執行完畢后執行的邏輯。
Around advice環繞通知非常靈活地在方法調用前后執行特定邏輯的通知類型。

典型應用場景

Spring AOP的典型應用場景包括:

  • 日志記錄:記錄方法執行時間、參數和返回值。
  • 事務管理:在方法執行前后開啟和提交/回滾事務。
  • 安全檢查:在方法執行前進行權限驗證。
  • 性能監控:統計方法的執行時間。

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

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

相關文章

設計模式學習筆記 - 設計原則 - 8.迪米特法則(LOD)

前言 迪米特法則,是一個非常實用的原則。利用這個原則,可以幫我們實現代碼的 “高內聚、松耦合”。 圍繞下面幾個問題,來學習迪米特原則。 什么是 “高內聚、松耦合”?如何利用迪米特法則來實現 高內聚、松耦合?哪些…

程序員求職

程序員的金三銀四求職寶典 隨著春天的腳步漸近,對于許多程序員來說,一年中最繁忙、最重要的面試季節也隨之而來。金三銀四,即三月和四月,被廣大程序員視為求職的黃金時期。在這兩個月里,各大公司紛紛開放招聘&#xf…

技術實踐|百度安全「大模型內容安全」高級攻擊風險評測

1、引子 2023年10月16日,OWASP發布了《OWASP Top 10 for LLM Applications》,這對于新興的大語言模型安全領域,可謂一份綱領性的重要報告。 OWASP是開放式Web應用程序安全項目(Open Web Application Security Project&#xff0…

【Linux網絡命令系列】ping curl telnet三劍客

💝💝💝歡迎來到我的博客,很高興能夠在這里和您見面!希望您在這里可以感受到一份輕松愉快的氛圍,不僅可以獲得有趣的內容和知識,也可以暢所欲言、分享您的想法和見解。 推薦:kwan 的首頁,持續學…

【C++】vector的使用和模擬實現(超級詳解!!!!)

文章目錄 前言1.vector的介紹及使用1.1 vector的介紹1.2 vector的使用1.2.1 vector的定義1.2.2 vector iterator 的使用1.2.3 vector 空間增長問題1.2.3 vector 增刪查改1.2.4 vector 迭代器失效問題。(重點!!!!!!)1.2.5 vector 在OJ中有關的練習題 2.ve…

C++入門和基礎

目錄 文章目錄 前言 一、C關鍵字 二、命名空間 2.1 命名空間的定義 2.2 命名空間的使用 2.3 標準命名空間 三、C輸入&輸出 四、缺省參數 4.1 缺省參數的概念 4.2 缺省參數的分類 五、函數重載 5.1 函數重載的簡介 5.2 函數重載的分類 六、引用 6.1 引用的…

搭建個人IC_EDA服務器(物理機)一:安裝Centos7

1.準備 大于8G的U盤;待裝的電腦,我使用淘汰的在大學時候使用的筆記本;U盤啟動器制作工具:UltralSo;官網下載的在沒有付費的情況下,即使試用期,安裝的時候會有莫名的問題,建議使用這…

【接口測試】常見HTTP面試題

目錄 HTTP GET 和 POST 的區別 GET 和 POST 方法都是安全和冪等的嗎 接口冪等實現方式 說說 post 請求的幾種參數格式是什么樣的? HTTP特性 HTTP(1.1) 的優點有哪些? HTTP(1.1) 的缺點有哪些&#x…

全量知識系統問題及SmartChat給出的答復 之14 解析器+DDD+文法型 之2

Q36. 知識系統中設計的三種文法解析器和設計模式之間的關系 進一步,我想將 知識系統中設計的三種語言(形式語言、人工語言和自然)的文法解析器和DDD中的三種程序類型(領域模型、領域實體和領域服務) 形式語言文法 我…

動態代理總結

Java 代理模式 使用代理對象來代替對真實對象(real object)的訪問,這樣就可以在不修改原目標對象的前提下,提供額外的功能操作,擴展目標對象的功能 靜態代理 靜態代理在編譯時就將接口、實現類、代理類這些都變成了一個個實際的 class 文件…

MQ如何防止消息被重復消費?

被詢問如何防止MQ消息被重復消費時,其實是在考察候選人對消息隊列、分布式系統設計以及容錯機制的理解,通過這些問題,可以全面了解候選人在處理MQ消息重復消費問題時的思考方式、技術能力和實踐經驗,從而評估其是否適合擔任相關崗…

Puzzles

題目鏈接:Submit - Codeforces?????? 解題思路: 題目大概意思就是在一個數組里找n個數里的最大值減最小值的最小值,先排序,然后將第i n - 1項減去第i項與最小值作比較,輸出最小值即可,注意循環結束…

NTP網絡校時服務器(GPS北斗衛星校時系統)應用場景

NTP網絡校時服務器(GPS北斗衛星校時系統)應用場景 NTP網絡校時服務器(GPS北斗衛星校時系統)應用場景 隨著大數據、云計算時代的到來,各行業信息化建設的不斷提升,信息化下的各個系統不再單獨處理各自業務,而是趨于協同工作,因此,各…

YOLOv應用開發與實現

一、背景與簡介 YOLO(You Only Look Once)是一種流行的實時目標檢測系統,其核心思想是將目標檢測視為回歸問題,從而可以在單個網絡中進行端到端的訓練。YOLOv作為該系列的最新版本,帶來了更高的檢測精度和更快的處理速…

代碼隨想錄day34||● 860.檸檬水找零 ● 406.根據身高重建隊列 ● 452. 用最少數量的箭引爆氣球

860. 檸檬水找零 - 力扣&#xff08;LeetCode&#xff09; class Solution { public:bool lemonadeChange(vector<int>& bills) {int five0,ten0,twenty0;for(int bill:bills){if(bill5)five;if(bill10){if(five<0)return false;ten;five--;}if(bill20){if(ten&g…

【框架】MyBatis 框架重點解析

MyBatis 框架重點解析 1. MyBatis 執行流程 會話工廠生產的 SqlSession 對象提供了對數據庫執行SQL命令所需的所有方法&#xff0c;包括但不限于以下功能&#xff1a; 數據庫操作&#xff1a;SqlSession可以執行查詢&#xff08;select&#xff09;、插入&#xff08;insert&a…

騰訊云幻獸帕魯游戲存檔遷移教程,本地單人房遷移/四人世界怎么遷移存檔?

騰訊云幻獸帕魯游戲存檔遷移的方法主要包括以下幾個步驟&#xff1a; 登錄輕量云控制臺&#xff1a;首先&#xff0c;需要登錄到輕量云控制臺&#xff0c;這是進行存檔遷移的前提條件。在輕量云控制臺中&#xff0c;可以找到接收存檔的服務器卡片&#xff0c;并點擊進入實例詳情…

Jmeter 安裝

JMeter是Java的框架&#xff0c;因此在安裝Jmeter前需要先安裝JDK&#xff0c;此處安裝以Windows版為例 1. 安裝jdk&#xff1a;Java Downloads | Oracle 安裝完成后設置環境變量 將環境變量JAVA_HOME設置為 C:\Program Files\Java\jdk1.7.0_25 在系統變量Path中添加 C:\Pro…

股票技術指標(包含貪婪指數)

股票技術指標是用于分析股票價格和成交量數據&#xff0c;以便預測未來市場走勢的工具。技術分析師使用這些指標來識別市場趨勢、價格模式、交易信號和投資機會。技術指標通常基于數學公式&#xff0c;并通常在股票價格圖表上以圖形形式表示。 技術指標主要分為以下幾類&#x…

A Brief Introduction of the Tqdm Module in Python

DateAuthorVersionNote2024.02.28Dog TaoV1.0Release the note. 文章目錄 A Brief Introduction of the Tqdm Module in PythonIntroductionKey FeaturesInstallation Usage ExamplesBasic UsageAdvanced Usage A Brief Introduction of the Tqdm Module in Python Introducti…