欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Spring Framework常用面試題及答案匯總

 更新時間:2020年06月23日 10:14:50   作者:因分享而收獲  
這篇文章主要介紹了Spring Framework常用面試題及答案匯總,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

1.什么是Spring Framework ?

Spring Framework 是一個提供了完整性的編程或配置一個現(xiàn)代化的基于JAVA的企業(yè)應(yīng)用,各種基礎(chǔ)設(shè)施的支持。

參見官方(https://spring.io/projects/spring-framework#overview):

The Spring Framework provides a comprehensive programming and configuration model for modern Java-based enterprise applications - on any kind of deployment platform.

Spring makes it easy to create Java enterprise applications. It provides everything you need to embrace the Java language in an enterprise environment, with support for Groovy and Kotlin as alternative languages on the JVM, and with the flexibility to create many kinds of architectures depending on an application's needs. As of Spring Framework 5.1, Spring requires JDK 8+ (Java SE 8+) and provides out-of-the-box support for JDK 11 LTS. Java SE 8 update 60 is suggested as the minimum patch release for Java 8, but it is generally recommended to use a recent patch release.

2.Spring Framework有哪些核心模塊 ?

  • spring-context : 事件驅(qū)動,注解驅(qū)動,模塊驅(qū)動等
  • spring-core : Spring基礎(chǔ)API模塊,如資源管理、泛型處理
  • spring-beans : Spring Bean 相關(guān),如依賴查找、依賴注入
  • spring-aop : Spring AOP 處理,如動態(tài)代理、AOP字節(jié)碼提升
  • spring-expression : Spring表達(dá)式語言模塊

(項(xiàng)目使用Maven進(jìn)行管理時,引入 spring-context模塊后,則會傳遞依賴加載其他4個模塊)

3.什么是IOC ?

IOC是控制反轉(zhuǎn),類似于好萊塢原則(你不要打電話給我,我會打電話給你),主要包含依賴查找和依賴注入

4.依賴注入和依賴查找的區(qū)別 ?

依賴查找是主動或手動的依賴查找方式,通常需要依賴容器或標(biāo)準(zhǔn)API實(shí)現(xiàn)。而依賴注入則是手動或自動依賴綁定的方式,無需依賴特定的容器和API

5.Spring作為IOC容器的優(yōu)勢有哪些 ?

典型的IOC容器管理,依賴注入、依賴查找

  • AOP抽象
  • 事物抽象
  • 事件機(jī)制
  • SPI擴(kuò)展
  • 強(qiáng)大的第三方整合
  • 易測試性 等

6.Spring 中 BeanFactory和FactoryBean區(qū)別 ?

BeanFactory是IOC底層容器

FactoryBean 是創(chuàng)建Bean的一種方式,幫助實(shí)現(xiàn)復(fù)雜的初始化邏輯

7.Spring 中 BeanFactory和ObjectFactory區(qū)別 ?

ObjectFactory和BeanFactory均提供依賴查找的能力;

ObjectFactory僅關(guān)注一個或一種類型的Bean的依賴查找,并且自身不具備依賴查找的能力,能力則由BeanFactory輸出;

BeanFactory則提供了單一類型、集合類型以及層次性等多種依賴查找方式;

8.BeanFactory.getBean 操作是否線程安全 ?

BeanFactory.getBean 方法的執(zhí)行是線程安全的,操作過程中會增加互斥鎖.

9.Spring有多少種依賴注入的方式 ?

  • 構(gòu)造器注入
  • Setter方法注入
  • 字段注入
  • 方法注入
  • 接口回調(diào)注入

10.Spring偏好構(gòu)造器注入還是Setter注入 ?

兩種依賴注入方式均可以使用,如果是必須依賴的話,推薦使用構(gòu)造器注入,Setter注入用于可選依賴

11.Spring注入和依賴來源是否相同 ?

不相同,依賴查找的來源僅限于Spring BeanDefinition 以及單例對象;依賴注入的來源還包括 ResolvableDependency以及@Value所標(biāo)注的外部化配置

12.單例對象能在Ioc容器啟動后注冊嗎 ?

可以的,單例對象的注冊于BeanDefinition不同,BeanDefinition會被ConfigurableListableBeanFactory#freezeConfiguration()方法影響,從而凍結(jié)注冊,單例對象則沒有這個限制

13.Spring依賴注入的來源有哪些 ?

Spring BeanDefinition

單例對象

  Resolvable Dependency

@Value 外部化配置

14.Spring內(nèi)建的Bean作用域有幾種 ?

  • singleton -- 默認(rèn)單例 ☆
  • prototype -- 原型
  • request -- Web中使用
  • session
  • application
  • websocket

15.Spring 中 singleton Bean 是否在一個應(yīng)用中是唯一的 ?

否, singleton bean 僅在當(dāng)前Spring IoC 容器(Bean Factory)中是單例對象; 而BeanFactory可能存在父容器

16.Spring 中 BeanPostProcessor 的使用場景有哪些 ?

Spring 中 BeanPostProcessor 提供 Spring Bean 初始化前和初始化后的生命周期回調(diào);分別對應(yīng) postProcessBeforeInitialization 以及 postProcessAfterInitialization 方法,允許對關(guān)心的 Bean 進(jìn)行擴(kuò)展,甚至替換。

其中 ApplicationContext 相關(guān)的 Aware 回調(diào)也是基于 BeanPostProcessor 實(shí)現(xiàn),即 ApplicationContextAwareProcessor

17.Spring 中 BeanFactoryPostProcessor 與 BeanPostProcessor 的區(qū)別 ?

BeanFactoryPostProcessor 是 Spring BeanFactory(實(shí)際為 ConfigureableListableBeanFactory)的后置處理器,用于擴(kuò)展 BeanFactory, 或通過 BeanFactory 進(jìn)行依賴查找或依賴注入;

BeanFactoryPostProcessor 必須有 Spring ApplicationContext 執(zhí)行,BeanFactory 無法與其直接交互;

BeanPostProcessor 則直接與 BeanFactory 關(guān)聯(lián),屬于N對1的關(guān)系。

18.Spring 中 BeanFactory 是如何處理 Bean 的生命周期 ?

BeanFactory的默認(rèn)實(shí)現(xiàn)為 DefaultListableBeanFactory,其中Bean生命周期與方法映射如下:

  • BeanDefinition 注冊階段 -- registerBeanDefinition
  • BeanDefinition 合并階段 -- getMergedBeanDefinition
  • Bean 實(shí)例化前階段 -- resolveBeforeInstantiation
  • Bean 實(shí)例化階段 -- createBeanInstance
  • Bean 實(shí)例化后階段 --populateBean
  • Bean 屬性賦值前階段 -- populateBean
  • Bean Aware 接口回調(diào)階段 -- initializeBean
  • Bean 初始化前階段 -- initializeBean
  • Bean 初始化階段 -- initializeBean
  • Bean 初始化后階段 -- initializeBean
  • Bean 初始化完成階段 -- preInstantiateSingletons
  • Bean 銷毀前階段 -- destroyBean
  • Bean 銷毀階段 -- destroyBean

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 淺談HBase在SpringBoot項(xiàng)目里的應(yīng)用(含HBaseUtil工具類)

    淺談HBase在SpringBoot項(xiàng)目里的應(yīng)用(含HBaseUtil工具類)

    這篇文章主要介紹了淺談HBase在SpringBoot項(xiàng)目里的應(yīng)用(含HBaseUtil工具類),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • Spring Cloud Feign實(shí)例講解學(xué)習(xí)

    Spring Cloud Feign實(shí)例講解學(xué)習(xí)

    這篇文章主要介紹了Spring Cloud Feign實(shí)例講解學(xué)習(xí),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-02-02
  • Java用文件流下載網(wǎng)絡(luò)文件示例代碼

    Java用文件流下載網(wǎng)絡(luò)文件示例代碼

    這篇文章主要介紹了Java用文件流的方式下載網(wǎng)絡(luò)文件,大家參考使用吧
    2013-11-11
  • 高并發(fā)環(huán)境下安全修改同一行數(shù)據(jù)庫數(shù)據(jù)的策略分享

    高并發(fā)環(huán)境下安全修改同一行數(shù)據(jù)庫數(shù)據(jù)的策略分享

    隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,越來越多的應(yīng)用需要在高并發(fā)環(huán)境中運(yùn)行,數(shù)據(jù)庫的并發(fā)控制成為了業(yè)務(wù)的關(guān)鍵,本文將介紹如何在高并發(fā)情況下,安全地修改數(shù)據(jù)庫中的同一行數(shù)據(jù),需要的可以參考一下
    2023-06-06
  • SpringBoot靜態(tài)資源目錄訪問

    SpringBoot靜態(tài)資源目錄訪問

    今天小編就為大家分享一篇關(guān)于SpringBoot靜態(tài)資源目錄訪問,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • Java多線程4種拒絕策略小結(jié)

    Java多線程4種拒絕策略小結(jié)

    當(dāng)線程池中的任務(wù)隊(duì)列已滿且無法再接受新的任務(wù)時,就需要采取拒絕策略來處理這種情況,本文主要介紹了Java多線程拒絕策略,包含了四種常見的拒絕策略,具有一定的參考價值,感興趣的可以了解一下
    2024-03-03
  • Windows系統(tǒng)安裝JDK小結(jié)

    Windows系統(tǒng)安裝JDK小結(jié)

    這篇文章主要給大家詳細(xì)介紹了Windows系統(tǒng)安裝JDK的方法和步奏,十分的細(xì)致,有需要的小伙伴可以參考下
    2016-03-03
  • SpringBoot中熔斷器的原理和使用詳解

    SpringBoot中熔斷器的原理和使用詳解

    這篇文章主要介紹了SpringBoot中熔斷器的原理和使用詳解,熔斷器是一種用于處理分布式系統(tǒng)中故障的設(shè)計(jì)模式,它可以防止出現(xiàn)故障的服務(wù)對整個系統(tǒng)造成連鎖反應(yīng),需要的朋友可以參考下
    2023-07-07
  • java開發(fā)主流定時任務(wù)解決方案全橫評詳解

    java開發(fā)主流定時任務(wù)解決方案全橫評詳解

    這篇文章主要為大家介紹了java開發(fā)主流定時任務(wù)解決方案全橫評詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • Java零基礎(chǔ)講解異常

    Java零基礎(chǔ)講解異常

    異常就是不正常,比如當(dāng)我們身體出現(xiàn)了異常我們會根據(jù)身體情況選擇喝開水、吃藥、看病、等?異常處理方法。?java異常處理機(jī)制是我們java語言使用異常處理機(jī)制為程序提供了錯誤處理的能力,程序出現(xiàn)的錯誤,程序可以安全的退出,以保證程序正常的運(yùn)行等
    2022-04-04

最新評論