spring常用知識點

1、攔截器和過濾器區別

1. 原理不同:

攔截器是基于java的反射機制,而過濾器采用責任鏈模式是基于函數回調的。

2. 使用范圍不同:

過濾器Filter的使用依賴于Tomcat等容器,導致它只能在web程序中使用

攔截器是一個Sping組件,由Spring管理,不依賴于Tomcat容器,是可以單獨使用的。也可以應用于Application、Swing容器中。

3.執行順序不同:

先過濾器后攔截器

4.注入Bean情況不同:

攔截器加載的時間點在springcontext之前,而Bean又是由spring進行管理。

在注冊攔截器之前,先將Interceptor 手動進行注入

2、什么是AOP? 有哪些AOP的概念?


AOP(Aspect-Oriented Programming)是一種編程思想,它通過將應用程序分解成多個切面,來實現對應用程序進行橫向切割的目的,從而實現代碼的復用和系統的解耦。

AOP的核心思想是將與業務邏輯無關的代碼,如日志、事務、異常處理等,從業務邏輯代碼中分離出來,形成獨立的模塊,以便于復用和維護。

AOP的一些概念如下:

切面(Aspect):切面是一個模塊化的橫切關注點,它通過對某個點進行攔截,來實現對目標對象的增強。
連接點(Join Point):連接點是在應用程序執行過程中能夠插入切面的點,例如方法調用或異常處理等。
切入點(Pointcut):切入點是一組連接點的集合,它定義了在哪些連接點處應用切面。
通知(Advice):通知是切面在連接點上執行的操作,例如在方法調用前、方法調用后、方法返回時或方法拋出異常時執行的操作。
織入(Weaving):織入是將切面應用到目標對象并創建新的代理對象的過程。織入可以在編譯時、類加載時或運行時進行。
目標對象(Target Object):目標對象是應用程序中需要被增強的對象。
代理對象(Proxy Object):代理對象是一個中間件對象,它攔截對目標對象的訪問并調用切面提供的通知。
通過AOP的概念,我們可以將應用程序按照不同的橫向關注點進行切割,并將與業務邏輯無關的代碼分離出來,從而提高應用程序的可維護性和可擴展性。常見的AOP框架有Spring AOP和AspectJ。

3、AOP 有哪些應用場景?

AOP(Aspect-Oriented Programming)可以在許多場景下被應用。以下是一些AOP的應用場景:

日志記錄:在方法調用前后記錄日志,用于排查錯誤和分析系統性能。
安全性控制:控制用戶對系統中某些資源或方法的訪問權限,確保系統安全。
事務管理:在方法調用前后開啟、提交或回滾事務,確保數據的一致性和完整性。
緩存管理:通過在方法調用前檢查緩存中是否有目標對象的緩存結果,減少系統的響應時間和網絡開銷。
性能監控:記錄方法調用的時間、次數和異常等信息,以便于分析系統性能。
異常處理:在方法調用過程中捕獲異常并記錄或通知開發人員,以便于及時處理異常情況。
數據驗證:在方法調用前對輸入參數進行驗證,確保輸入數據的正確性和合法性。
代碼復用:將與業務邏輯無關的代碼抽離出來,以便于復用和維護。

4、Bean Factory和ApplicationContext有什么區別?


Bean Factory和ApplicationContext都是Spring框架中負責管理Bean的容器,但是它們之間有一些區別:

Bean Factory是Spring框架的基礎設施,提供了最基本的IOC功能,而ApplicationContext是Bean Factory的超集,包含了Bean Factory的所有功能,并且還提供了更多的企業級特性,如事件傳播、國際化、AOP等。
在實現上,ApplicationContext是Bean Factory的擴展,ApplicationContext除了提供了Bean Factory的所有功能之外,還提供了更多的功能,例如:資源管理、事件發布等等。
一般來說,Bean Factory適用于輕量級應用,而ApplicationContext則適用于大型企業應用,因為ApplicationContext提供了更多的企業級特性和功能,例如:事務管理、遠程訪問、JNDI訪問等等。
ApplicationContext在啟動時就實例化所有的單例Bean,而Bean Factory是在獲取Bean時才進行實例化。
總之,ApplicationContext是Bean Factory的超集,提供了更多的企業級特性和功能,一般情況下我們優先使用ApplicationContext。

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

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

相關文章

abs(-2147483648) == 2147483648?

從數學意義上,這是對的。但是,就怕但是。 #include int main() {long long v;v abs(-2147483648);printf("%lld\n", v);return 0; } 輸出: -2147483648 我們從source code中一一解開. /* Return the absolute value of I. */ int abs (…

Mongodb介紹及springboot集成增刪改查

文章目錄 1. MongoDB相關概念1.1 業務應用場景1.2 MongoDB簡介1.3 體系結構1.4 數據模型1.5 MongoDB的特點 2. docker安裝mongodb3. springboot集成3.1 文件結構3.2 增刪改查3.2.1 增加insert3.2.2 保存save3.2.3 更新update3.2.4 查詢3.2.5 刪除 1. MongoDB相關概念 1.1 業務…

Docker-Android安卓模擬器本地部署并實現遠程開發測試

文章目錄 1. 虛擬化環境檢查2. Android 模擬器部署3. Ubuntu安裝Cpolar4. 配置公網地址5. 遠程訪問小結 6. 固定Cpolar公網地址7. 固定地址訪問 本文主要介紹如何在Ubuntu系統使用Docker部署docker-android安卓模擬器,并結合cpolar內網穿透工具實現公網遠程訪問本地…

51建模網AR虛擬試用,讓網購不再只靠想象!

在數字化的浪潮中,網購已成為現代人生活的一部分。然而,傳統的網購模式常常因為無法直接試穿、試用商品,導致買家在收到商品后感到失望,特別是面對大件家居產品時,僅憑屏幕上的圖片和尺寸描述,很難準確地把…

智能AI愈發強大,企業如何防范AI網絡釣魚攻擊

隨著AI技術的快速發展,如ChatGPT等智能化工具在各個領域得到了廣泛應用。然而,這些工具的普及也給網絡安全帶來了新的挑戰。AI模型的自然語言生成功能使得網絡釣魚攻擊更加智能化和隱蔽化,攻擊者能夠利用AI技術生成高度逼真的欺騙性郵件和其他…

深度學習之基于YoloV5人體姿態摔倒識別分析報警系統

歡迎大家點贊、收藏、關注、評論啦 ,由于篇幅有限,只展示了部分核心代碼。 文章目錄 一項目簡介 二、功能三、系統四. 總結 一項目簡介 一、項目背景與意義 隨著人口老齡化的加劇和人們對健康安全的日益關注,摔倒事件在老年人、幼兒、體育運…

2024-05-23 服務器開發-windows-加載dll動態庫

摘要: 2024-05-23 服務器開發-windows-加載dll動態庫 使用 LoadLibrary HMODULE mdl ::LoadLibrary(L"mylib.dll");if (!mdl){auto err ::GetLastError();std::cout << "ERROR: load VxCfgClient fail, error: " << err << std::endl…

分布式文件系統minIo

分布式文件系統 什么是分布式文件系統 一個計算機無法存儲海量的文件&#xff0c;通過網絡將若干計算機組織起來共同去存儲海量的文件&#xff0c;去接收海量用戶的請求&#xff0c;這些組織起來的計算機通過網絡進行通信&#xff0c;如下圖&#xff1a; 好處&#xff1a; 1、…

怎么ai思維導圖自動生成?推薦這三個工具

怎么ai思維導圖自動生成&#xff1f;隨著人工智能&#xff08;AI&#xff09;技術的不斷發展&#xff0c;其在各個領域的應用也日益廣泛。在思維導圖這一領域&#xff0c;AI技術的引入不僅極大地提高了制圖效率&#xff0c;還為用戶提供了更多樣化、個性化的制圖體驗。本文將為…

JavaScript身份三要素認證API、身份證二要素實名認證接口

996這種工作模式&#xff0c;試問有多少人愿意接受&#xff1f;然而這種工作制度在程序員的圈子里早已成為不成文的“規定”。網絡段子也有不少調侃程序員的&#xff0c;比如&#xff1a;一程序員去面試&#xff0c;面試官問&#xff1a;“你畢業才兩年&#xff0c;這三年工作經…

基于消息中間件的異步通信機制在系統解耦中的優化與實現

??謝謝大家捧場&#xff0c;祝屏幕前的小伙伴們每天都有好運相伴左右&#xff0c;一定要天天開心哦&#xff01;?? &#x1f388;&#x1f388;作者主頁&#xff1a; 喔的嘛呀&#x1f388;&#x1f388; ?? 帥哥美女們&#xff0c;我們共同加油&#xff01;一起進步&am…

【只會for循環? 來看下, Nodejs中典型的5種循環方式】

Nodejs中的&#xff0c;除了經典的for循環 , 其實還有幾種好用的循環方式&#xff0c; 并有典型的使用場景。下面來一起看下&#x1f447;&#x1f3fb; 5種循環用法 For Loop&#xff1a;這是最常見的循環方式&#xff0c;適用于你知道循環次數的情況。 for (let i 0; i &…

GPT-SoVITS語音克隆部署與使用

GPT-SoVITS是一款強大的少量樣本語音轉換與語音合成開源工具。當前&#xff0c;GPT-SoVITS實現了如下幾個方面的功能&#xff1a; 由參考音頻的情感、音色、語速控制合成音頻的情感、音色、語速可以少量語音微調訓練&#xff0c;也可不訓練直接推理可以跨語種生成&#xff0c;…

【AI】試用 ai 提取文章內容嘗試

電梯產業面臨這樣一個問題&#xff0c;因為太多的品牌&#xff0c;將近 400 多個&#xff0c;甚至有寶馬&#xff0c;奧迪&#xff0c;你敢相信&#xff0c;一家造汽車的造過電梯?不過好像想想也是&#xff0c;電梯是第二大交通工具&#xff0c;電梯從某種意義上來說&#xff…

無網環境禁止 WPS 提示登錄,且基本功能按鈕可用

目前 WPS 升級后&#xff0c;每次打開都會提示你登錄 WPS&#xff0c;并且在未登錄之前所有基本功能按鈕是置灰狀態&#xff0c;無法使用。 如此一來&#xff0c;在內網或無網環境&#xff0c;我們無法登陸 WPS &#xff0c;就給我們的使用帶來了極大的不便&#xff0c;那么有沒…

全網最全面的由淺到深的Kotlin基礎教程(七)

前言 本篇文章接著上一篇文章全網最全面的由淺到深的Kotlin基礎教程&#xff08;六&#xff09;繼續進階學習kotlin&#xff0c;建議看完上一篇文章&#xff0c;再來看本篇文章。本篇主要分析一些常用的kotlin函數源碼&#xff0c;以及用kotlin簡單實現Rxjava的幾個操作符。堅…

卡梅德生物噬菌體展示多肽庫

噬菌體展示多肽文庫在新藥發現領域展現出巨大的潛力和應用價值。卡梅德生物的噬菌體展示肽庫通過將大量肽序列插入到噬菌體基因組中&#xff0c;并在噬菌體表面展示這些肽&#xff0c;構建了一個多樣性的肽庫。 在新藥發現過程中&#xff0c;噬菌體展示多肽文庫可以用于篩選具有…

全志A133 android10 調試vibrator震動馬達

一&#xff0c;前提條件 全志使用的馬達配置為上電震動&#xff0c;下電停止&#xff0c;需測試硬件是否正常。馬達供電最好為獨立供電&#xff0c;避免干擾。 二&#xff0c;適配步驟 1. dts中增加馬達配置 motor_para {compatible "allwinner,sunxi-vibrator";…

java工廠模式示例代碼

工廠模式是一種創建型設計模式&#xff0c;它提供了一種將對象的創建與使用分離的方法。在工廠模式中&#xff0c;我們通過工廠類來創建對象&#xff0c;而不是直接在客戶端代碼中使用 new 關鍵字來創建對象。以下是一個簡單的Java工廠模式示例代碼&#xff1a; 產品接口 首先…

BGP實驗:聯邦和發射器實驗

BGP實驗&#xff1a;聯邦和發射器實驗 一、實驗拓撲 二、實驗要求及分析 實驗要求&#xff1a; 1、AS1存在兩個環回&#xff0c;一個地址為192.168.1.0/24&#xff0c;該地址不能再任何協議中宣告&#xff1b; ? AS3存在兩個環回&#xff0c;一個地址為192.168.2.0/24&…