面經-常用框架

1.Spring

1.1什么是Spring框架?

Spring 是?種輕量級開發框架,旨在提?開發?員的開發效率以及系統的可維護性。
Spring 的 6 個特征:核?技術,測試,數據訪問,Web?持,集成,語?

1.2列舉?些重要的Spring模塊?

Spring Core 基礎 , 可以說 Spring 其他所有的功能都需要依賴于該類庫。主要提供 IoC
賴注?功能。
Spring Aspects : 該模塊為與 AspectJ 的集成提供?持。
Spring AOP :提供了?向切?的編程實現。
Spring JDBC : Java 數據庫連接。
Spring JMS Java 消息服務。
Spring ORM : ?于?持 Hibernate ORM ?具。
Spring Web : 為創建 Web 應?程序提供?持。
Spring Test : 提供了對 JUnit TestNG 測試的?持

1.3@RestController vs @Controller

Controller 返回?個??
單獨使? @Controller 不加 @ResponseBody 的話?般使?在要返回?個視圖的情況,這種情況
屬于??傳統的 Spring MVC 的應?,對應于前后端不分離的情況。
@RestController 返回 JSON XML 形式數據
@RestController 只返回對象,對象數據直接以 JSON XML 形式寫? HTTP 響應
(Response) 中,這種情況屬于 RESTful Web 服務,這也是?前?常開發所接觸的最常?的情況
(前后端分離)。
@Controller +@ResponseBody 返回 JSON XML 形式數據
如果你需要在 Spring4 之前開發 RESTful Web 服務的話,你需要使? @Controller 并結
@ResponseBody 注解,也就是說 @Controller + @ResponseBody = @RestController Spring 4
之后新加的注解)。
@ResponseBody將對象轉換成JSON 或者XML形式
@ResponseBody 注解的作?是將 Controller 的?法返回的對象通過適當的轉換器轉換為指
定的格式之后,寫?到 HTTP 響應 (Response) 對象的 body 中,通常?來返回 JSON 或者
XML 數據,返回 JSON 數據的情況?較多。

1.4Spring IOC & AOP

IOC

????????IoC( Inverse of Control: 控制反轉)是?種 設計思想 ,就是 將原本在程序中?動創建對象的控制 權,交由 Spring 框架來管理。 ? IoC 容器是 Spring ?來實現 IoC 的載體, IoC 容器實際上就是個 Map key value ,Map 中存放的是各 種對象。
????????將對象之間的相互依賴關系交給 IoC 容器來管理,并由 IoC 容器完成對象的注?。 IoC 容器就像是?個??? 樣,當我們需要創建?個對象的時候,只需要配置好配置?件 / 注解即可,完全不?考慮對象是如 何被創建出來的。
AOP
???????AOP(Aspect-Oriented Programming:?向切?編程 ) 能夠將那些與業務?關, 卻為業務模塊所共 同調?的邏輯或責任(例如事務處理、?志管理、權限控制等)封裝起來 ,便于 減少系統的重復
代碼 降低模塊間的耦合度 ,并 有利于未來的可拓展性和可維護性
????????Spring AOP就是基于動態代理的 ,如果要代理的對象,實現了某個接?,那么 Spring AOP 會使?JDK Proxy ,去創建代理對象,?對于沒有實現接?的對象, 這時候 Spring AOP 會使? Cglib ?成?個被代理對象的?類來作為代理

1.5Spring AOP AspectJ AOP 有什么區別?

????????Spring AOP 屬于運?時增強,? AspectJ 是編譯時增強。 Spring AOP 基于代理 (Proxying) ,? AspectJ 基于字節碼操作 (Bytecode Manipulation)
????????Spring AOP 已經集成了 AspectJ AspectJ 應該算的上是 Java ?態系統中最完整的 AOP
架了。 AspectJ 相?于 Spring AOP 功能更加強?,但是 Spring AOP 相對來說更簡單,如果我們的切??較少,那么兩者性能差異不?。但是,當切?太多的話,最好選擇 AspectJ ,它?Spring AOP 快很多。

1.6Spring 中的 bean 的作?域有哪些?

singleton : 唯? bean 實例, Spring 中的 bean 默認都是單例的。
prototype : 每次請求都會創建?個新的 bean 實例。
request : 每?次 HTTP 請求都會產??個新的 bean ,該 bean 僅在當前 HTTP request 內有
效。
session : 每?次 HTTP 請求都會產??個新的 bean ,該 bean 僅在當前 HTTP session 內有
效。
global-session : 全局 session 作?域,僅僅在基于 portlet web 應?中才有意義, Spring5
經沒有了。 Portlet 是能夠?成語義代碼 ( 例如: HTML) ?段的?型 Java Web 插件。它們基于
portlet 容器,可以像 servlet ?樣處理 HTTP 請求。但是,與 servlet 不同,每個 portlet 都有不
同的會話

1.7Spring 中的單例 bean 的線程安全問題了解嗎?

單例 bean 存在線程問題,主要是因為當多個線程操作同?個對象的時候,對這個對象的?靜態成員變量的寫操作會存在線程安全問題。
常?的有兩種解決辦法:
1. Bean 對象中盡量避免定義可變的成員變量(不太現實)。
2. 在類中定義?個 ThreadLocal 成員變量,將需要的可變成員變量保存在 ThreadLocal 中(推
薦的?種?式)。

1.8@Component @Bean 的區別是什么?

1. 作?對象不同 : @Component 注解作?于,? @Bean 注解作?于?法。
2. @Component 通常是通過類路徑掃描來?動偵測以及?動裝配到 Spring 容器中(我們可以使
? @ComponentScan 注解定義要掃描的路徑從中找出標識了需要裝配的類?動裝配到
Spring bean 容器中)。 @Bean 注解通常是我們在標有該注解的?法中定義產?這個
bean, @Bean 告訴了 Spring 這是某個類的示例,當我需要?它的時候還給我。
3. @Bean 注解? Component 注解的?定義性更強,?且很多地?我們只能通過 @Bean
解來注冊 bean 。?如當我們引?第三?庫中的類需要裝配到 Spring 容器時,則只能通過
@Bean 來實現。

1.9將?個類聲明為Spring bean 的注解有哪些?

我們?般使? @Autowired 注解?動裝配 bean ,要想把類標識成可?于 @Autowired 注解?動
裝配的 bean 的類 , 采?以下注解可實現:
@Component :通?的注解,可標注任意類為 Spring 組件。如果?個 Bean 不知道屬于哪
個層,可以使? @Component 注解標注。
@Repository : 對應持久層即 Dao 層,主要?于數據庫相關操作。
@Service : 對應服務層,主要涉及?些復雜的邏輯,需要?到 Dao 層。
@Controller : 對應 Spring MVC 控制層,主要?戶接受?戶請求并調? Service 層返回數
據給前端??。

1.10Spring 中的 bean ?命周期?

Bean 容器找到配置?件中 Spring Bean 的定義。
Bean 容器利? Java Reflection API 創建?個 Bean 的實例。
如果涉及到?些屬性值 利? set() ?法設置?些屬性值。
如果 Bean 實現了 BeanNameAware 接?,調? setBeanName() ?法,傳? Bean 的名字。
如果 Bean 實現了 BeanClassLoaderAware 接?,調? setBeanClassLoader() ?法,傳?
ClassLoader 對象的實例。
與上?的類似,如果實現了其他 *.Aware 接?,就調?相應的?法。
如果有和加載這個 Bean Spring 容器相關的 BeanPostProcessor 對象,執
? postProcessBeforeInitialization() ?法
如果 Bean 實現了 InitializingBean 接?,執? afterPropertiesSet() ?法。
如果 Bean 在配置?件中的定義包含 init-method 屬性,執?指定的?法。
} 如果有和加載這個 Bean Spring 容器相關的 BeanPostProcessor 對象,執? postProcessAfterInitialization() ?法
當要銷毀 Bean 的時候,如果 Bean 實現了 DisposableBean 接?,執? destroy() ?法。
當要銷毀 Bean 的時候,如果 Bean 在配置?件中的定義包含 destroy-method 屬性,執?指
定的?法。

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

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

相關文章

Ubuntu20.04安裝LibTorch并完成高斯濺射環境搭建

0. 簡介 最近受到優刻得的使用邀請,正好解決了我在大模型和自動駕駛行業對GPU的使用需求。UCloud云計算旗下的Compshare的GPU算力云平臺。他們提供高性價比的4090 GPU,按時收費每卡2.6元,月卡只需要1.7元每小時,并附帶200G的免費…

接口自動化測試-項目實戰

什么是接口自動化測試:使用工具或代碼代替人對接口進行測試 測試項目結構(python包) 1、接口api包 2、script:業務腳本 3、data:數據 4、config.py :配置文件 5、reporter:報告 錯誤問題: 1、未打印任何東西。添加pip ins…

走馬燈封裝

走馬燈功能需求: 支持定時切換;支持左右按鈕切換(根據鼠標是否在切換組件內展示和隱藏左右切換按鈕);支持底部標識切換; 走馬燈 完整代碼如下: /*** class 走馬燈*/import react, { Compone…

C語言 指針——緩沖區溢出與緩沖區溢出攻擊

目錄 緩沖區溢出攻擊 緩沖區溢出攻擊實例 字符串的安全輸入方法?編輯 防止緩沖區溢出的兩個要點 緩沖區溢出攻擊 網絡黑客常針對系統和程序自身存在的漏洞,編寫相應的攻擊程序 ? 對緩沖區溢出漏洞的攻擊 —— 最常見 ? 幾乎占到了網絡攻擊次數的一半以上…

Android (已解決)Gradle 編譯失敗 Unsupported class file major version 61

文章目錄 一、報錯原因二、解決方法 一、報錯原因 新版本的 Android Studio 默認使用的是 Java 17 LTS,而這個歷史項目的 Gradle 版本很低,不支持高版本的 Java。 具體原因:Java 17 (major version 61) 編譯的 class 文件,如果在…

逆向學習匯編篇:指令的操作

本節課在線學習視頻(網盤地址,保存后即可免費觀看): ??https://pan.quark.cn/s/660c759dea95?? 在逆向工程中,深入理解匯編語言的指令操作是至關重要的。匯編指令是計算機硬件與軟件之間的橋梁,它們直…

DevEco Studio有時會多出來.js和.map文件,導致項目不能運行

1、問題 在使用DevEco的時候有時候會出現啥都沒干,但是在項目的目錄下會自動生成和文件同名的.js和.js.map文件,至于為什么會生成目前我也不知道,如果想要更深了解可以到論壇討論:華為開發者論壇。生成.js和.js.map文件優…

Terraform基礎概念一

Terraform基礎概念一 1.Infrastructure-as-Code(IaC)概念1.1 IaC優勢1.2 IaC工具1.3 IaC的兩種方式 2.Terraform基礎概念2.1 Terraform工作原理2.2 Terraform 工作流 3.總結 1.Infrastructure-as-Code(IaC)概念 基礎設施即代碼(Infrastructure-as-Code,…

SVN 的忽略(Ignore)和遞歸(Recursively)以及忽略部分

SVN中忽略大家經常用到,但總是似懂非懂,下面就詳細展開說明一下忽略如何設置。 兩個忽略 通常設置忽略都是文件夾和里面的文件都忽略,通常只需要鼠標右鍵點擊忽略就可以了,如圖: 第一個忽略用的最多,就是…

關于GPIO的上拉、下拉,無上下拉

1.GPIO_PULLUP(上拉) 作用和原理 作用:上拉模式會在GPIO引腳和電源電壓(Vcc)之間連接一個內部上拉電阻。原理:當引腳配置為輸入模式時,如果引腳沒有連接到其他外部電路,內部上拉電…

排序算法(C語言版)

前言 排序作為生產環境中常見的需求之一,對整個產品有舉足輕重的影響,可以說使用一個合適的排序算法是業務邏輯中比較重要的一部分。今天我們就來介紹常見的排序算法以及實現 排序 所謂排序無非就是按照特定的規則對一組數據就行順序化。 常見的排序有…

Spring項目報錯解讀與全部報錯詳解

你好,我是Qiuner. 為幫助別人少走彎路和記錄自己編程學習過程而寫博客 這是我的 github https://github.com/Qiuner ?? ? gitee https://gitee.com/Qiuner 🌹 如果本篇文章幫到了你 不妨點個贊吧~ 我會很高興的 😄 (^ ~ ^) 想看更多 那就點個關注吧 我…

圖像大模型中的注意力和因果掩碼

AIM — 圖像領域中 LLM 的對應物。盡管 iGPT 已經存在 2 年多了,但自回歸尚未得到充分探索。在本文中,作者表明,當使用 AIM 對網絡進行預訓練時,一組圖像數據集上的下游任務的平均準確率會隨著數據和參數的增加而線性增加。 要運…

uniApp獲取實時定位

通過你獲取的key放到項目manifest.json里面&#xff0c;對應填寫你所需要的key值&#xff0c;還有高德用戶名 用戶名&#xff1a; key值的位置&#xff1a; 代碼&#xff1a; html: <view class"intList pdNone"><view class"label">詳細地…

[Cocos Creator] v3.8開發知識點記錄(持續更新)

問題&#xff1a;從 cc 里找不到宏定義 CC_PREVIEW 等。 解決方案&#xff1a;找不到就自己定義&#xff0c;將 declare const CC_PREVIEW; 添加到需要的ts文件里。參考&#xff1a;creator3d 找不到宏定義如 CC_EDITOR&#xff0c;CC_PREVIEW&#xff0c;CC_JSB - Creator 3.x…

爬蟲:爬取知乎熱榜一級評論及回答2024不包含翻頁

一、先上結果&#xff08;注:本文僅為興趣愛好探究&#xff0c;請勿進行商業利用或非法研究&#xff0c;負責后果自負&#xff0c;與作者無關&#xff09; 1、爬標題及其具體內容 2、抓標題下的對應回答 3、爬取對應一級評論 二、上流程 1、獲取cookies&#xff08;相信哥哥姐姐…

靜心冥想訓練入門|流靜

在喧囂的都市中&#xff0c;我們時常被瑣事所困&#xff0c;心靈難以得到片刻的寧靜。然而&#xff0c;靜心冥想訓練如同一扇通往內心寧靜的門戶&#xff0c;引領我們踏上一段靜謐的旅程。 靜心冥想&#xff0c;并非遙不可及的高深技藝&#xff0c;而是每個人都能掌握的心靈修煉…

優思學院|「按計劃推動型」與「需求拉動型」的生產模式

針對生產架構做對比分類的用語&#xff0c;主要有按計劃推進型與需求拉動型。 「按計劃推動型」與「需求拉動型」兩者乃是生產架構上常使用、成對比的兩個用語。不過&#xff0c;有時不只用來指單純的生產現場架構&#xff0c;也有人把它應用在更廣泛的生產架構設計上。 按計劃…

【yolov8系列】ubuntu上yolov8的開啟訓練的簡單記錄

前言 yolov8的廣泛使用&#xff0c;拉取yolov8源碼工程&#xff0c;然后配置環境后直接運行&#xff0c;初步驗證自己數據的檢測效果&#xff0c;在數據集準備OK的情況下 需要信手拈來&#xff0c;以保證開發過程的高效進行。 本篇博客更注意為了方便自己使用時參考。順便也記錄…

每日一題——力扣144. 二叉樹的前序遍歷(舉一反三+思想解讀+逐步優化)五千字好文

一個認為一切根源都是“自己不夠強”的INTJ 個人主頁&#xff1a;用哲學編程-CSDN博客專欄&#xff1a;每日一題——舉一反三Python編程學習Python內置函數 Python-3.12.0文檔解讀 目錄 我的寫法&#xff1a; 代碼結構 時間復雜度 空間復雜度 總結 我要更強 代碼說明 …