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

Java經(jīng)典面試題匯總:Spring

 更新時間:2021年07月21日 11:08:02   作者:讓程序飛  
本篇總結(jié)的是Spring框架相關(guān)的面試題,后續(xù)會持續(xù)更新,希望我的分享可以幫助到正在備戰(zhàn)面試的實習生或者已經(jīng)工作的同行,如果發(fā)現(xiàn)錯誤還望大家多多包涵,不吝賜教,謝謝

1. 什么是Spring? 有哪些優(yōu)點?

Spring 是個Java企業(yè)級應用的開源開發(fā)框架,主要用來開發(fā)Java應用,但是有些擴展是針對構(gòu)建J2EE平臺的web應用,目標是簡化Java企業(yè)級應用開發(fā),并通過POJO為基礎(chǔ)的編程模型促進良好的編程習慣。

主要有以下優(yōu)點:

  • 提供了 IOC 技術(shù),容器會幫你管理依賴的對象,從而不需要自己創(chuàng)建和管理依賴對象了,更輕松的實現(xiàn)了程序的解耦。
  • 提供了事務支持,使得事務操作變的更加方便。
  • 提供了面向切片編程,這樣可以更方便的處理某一類的問題。 更方便的框架集成,
  • 可以很方便的集成其他框架,比如 MyBatis、Hibernate 等。

2. 什么是 AOP?

AOP:Aspect Oriented Programming 是面向切面編程,通過預編譯方式和運行期動態(tài)代理實現(xiàn)程序功能的統(tǒng)一維護的一種技術(shù)。 簡單來說就是統(tǒng)一處理某一“切面”(類)的問題的編程思想,比如統(tǒng)一處理日志、異常等。

3. 什么是 IOC?

IOC:Inversion of Control(中文:控制反轉(zhuǎn))是 Spring 的核心,對于 Spring 框架來說,就是由 Spring 來負責控制對象的生命周期和對象間的關(guān)系。 簡單來說,控制指的是當前對象對內(nèi)部成員的控制權(quán);控制反轉(zhuǎn)指的是,這種控制權(quán)不由當前對象管理了,由其他(類,第三方容器)來管理。

4. 什么是 DI?

DI(Dependency Injection)叫依賴注入,是對IOC更簡單的詮釋,依賴注入的基本原則是應用組件不應該負責查找資源或者其他依賴的協(xié)作對象。

5. Spring 有哪些核心模塊?

  • Spring Core:框架的最基礎(chǔ)部分,提供 IOC 和依賴注入特性。
  • Spring Context:構(gòu)建于 Core 封裝包基礎(chǔ)上的 Context 封裝包,提供了一種框架式的對象訪問方法。
  • Spring dao:Data Access Object 提供了JDBC的抽象層。
  • Spring aop:提供了面向切面的編程實現(xiàn),讓你可以自定義攔截器、切點等。
  • Spring Web:提供了針對 Web 開發(fā)的集成特性,例如文件上傳,利用 servlet listeners 進行 IOC 容器初始化和針對 Web 的 ApplicationContext。
  • Spring Web MVC:Spring 中的 MVC 封裝包提供了 Web 應用的 Model-View-Controller(MVC)的實現(xiàn)。
  • Spring ORM:對現(xiàn)有的ORM框架的支持;

6. Spring 常用的注入方式有哪些?

  • setter 屬性注入
  • 構(gòu)造方法注入
  • 注解方式注入

7. Spring 中的 Bean 是線程安全的嗎?

spring 中的 bean 默認是單例模式,spring 框架并沒有對單例 bean 進行多線程的封裝處理。 實際上大部分時候 spring bean 無狀態(tài)的(比如 dao 類),所以某種程度上來說 bean 也是安全的,但如果 bean 有狀態(tài)的話(比如 view model 對象),那就要開發(fā)者自己去保證線程安全了,最簡單的就是改變 bean 的作用域,把“singleton”變更為“prototype”,這樣請求 bean 相當于 new Bean()了,所以就可以保證線程安全了。 有狀態(tài)就是有數(shù)據(jù)存儲功能。 無狀態(tài)就是不會保存數(shù)據(jù)。

8. Spring中Bean的作用域有哪些?

  • Singleton:Spring IOC 容器中只存在一個 bean 實例,bean 以單例模式存在,是系統(tǒng)默認值;
  • Prototype:每次從容器調(diào)用 bean 時都會創(chuàng)建一個新的示例,既每次 getBean()相當于執(zhí)行 new Bean()操作;
  • Request:每次 Http 請求都會創(chuàng)建一個 bean;
  • Session:同一個 Http Session 共享一個 bean 實例;
  • Global-Session:用于 portlet 容器,因為每個 portlet 有單獨的 Session,GlobalSession 提供一個全局性的 Http Session。 注意: 使用 prototype 作用域需要慎重的思考,因為頻繁創(chuàng)建和銷毀 bean 會帶來很大的性能開銷。

9. @Qualifier 注解

當有多個相同類型的bean卻只有一個需要自動裝配時,將@Qualifier 注解和@Autowire 注解結(jié)合使用以消除這種混淆,指定需要裝配的確切的bean。

10. @Resource與@Autowired注解的區(qū)別?

  • @Resource默認按照名稱方式進行bean匹配,支持指定類型。
  • @Autowired默認按照類型方式進行bean匹配,如果我們想使用按照名稱(byName)來裝配,可以結(jié)合@Qualifier注解一起使用。

11. Spring底層兩種動態(tài)代理實現(xiàn)原理及區(qū)別?

  • 被代理對象需要實現(xiàn)JDK提供的動態(tài)代理接口。
  • 通過cglib的jar包實現(xiàn)動態(tài)代理,該方法只需要對目標對象繼承即可

12. Spring 事務實現(xiàn)方式有哪些?

  • 聲明式事務:聲明式事務也有兩種實現(xiàn)方式,基于 xml 配置文件的方式和注解方式(在類上添加 @Transaction 注解)。
  • 編碼方式:提供編碼的形式管理和維護事務。

13. Spring事務有哪些特性?

簡稱ACID:

  • 原子性(Atomicity): 事務是最小的執(zhí)行單位,不允許分割。事務的原子性確保動作要么全部完成,要么完全不起作用;
  • 一致性(Consistency): 執(zhí)行事務前后,數(shù)據(jù)保持一致;
  • 隔離性(Isolation): 并發(fā)訪問數(shù)據(jù)庫時,一個用戶的事物不被其他事物所干擾,各并發(fā)事務之間數(shù)據(jù)庫是獨立的;
  • 持久性(Durability): 一個事務被提交之后。它對數(shù)據(jù)庫中數(shù)據(jù)的改變是持久的,即使數(shù)據(jù)庫發(fā)生故障也不應該對其有任何影響。

14. 說一下 Spring 的事務隔離?

Spring事務有五大隔離級別:

  • ISOLATION_DEFAULT:默認,用底層數(shù)據(jù)庫的設(shè)置隔離級別,數(shù)據(jù)庫設(shè)置的是什么我就用什么;
  • ISOLATIONREADUNCOMMITTED:未提交讀,最低隔離級別、事務未提交前,就可被其他事務讀?。〞霈F(xiàn)幻讀、臟讀、不可重復讀);
  • ISOLATIONREADCOMMITTED:提交讀,一個事務提交后才能被其他事務讀取到(會造成幻讀、不可重復讀),SQL server 的默認級別;
  • ISOLATIONREPEATABLEREAD:可重復讀,保證多次讀取同一個數(shù)據(jù)時,其值都和事務開始時候的內(nèi)容是一致,禁止讀取到別的事務未提交的數(shù)據(jù)(會造成幻讀),MySQL 的默認級別;
  • ISOLATION_SERIALIZABLE:序列化,代價最高最可靠的隔離級別,該隔離級別能防止臟讀、不可重復讀、幻讀。

15. Spring與贓讀、幻讀、不可重復讀?

  • 臟讀 :表示一個事務能夠讀取另一個事務中還未提交的數(shù)據(jù)。比如,某個事務嘗試插入記錄 A,此時該事務還未提交,然后另一個事務嘗試讀取到了記錄 A。
  • 不可重復讀 :是指在一個事務內(nèi),多次讀同一數(shù)據(jù)。
  • 幻讀 :指同一個事務內(nèi)多次查詢返回的結(jié)果集不一樣。比如同一個事務 A 第一次查詢時候有 n 條記錄,但是第二次同等條件下查詢卻有 n+1 條記錄,這就好像產(chǎn)生了幻覺。發(fā)生幻讀的原因也是另外一個事務新增或者刪除或者修改了第一個事務結(jié)果集里面的數(shù)據(jù),同一個記錄的數(shù)據(jù)內(nèi)容被修改了,所有數(shù)據(jù)行的記錄就變多或者變少了。

16. Spring事務的傳播行為有哪些?

Spring事務有七大傳播行為:

image.png

總結(jié)

本篇文章就到這里了,希望能給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

最新評論

温宿县| 永丰县| 富裕县| 郎溪县| 东乡族自治县| 夏河县| 嘉善县| 信阳市| 清河县| 大余县| 潍坊市| 洞口县| 郧西县| 万宁市| 西充县| 万山特区| 新河县| 大安市| 克东县| 固安县| 泊头市| 大化| 鄂尔多斯市| 西吉县| 邢台市| 碌曲县| 甘洛县| 马鞍山市| 沁源县| 乌苏市| 永靖县| 宜阳县| 铅山县| 潢川县| 西城区| 乐东| 汝州市| 平山县| 阳朔县| 多伦县| 浦北县|