Spring高級(jí)面試專題錦集
專注于為中小企業(yè)提供成都做網(wǎng)站、成都網(wǎng)站建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)昌圖免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了1000多家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過(guò)網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
1、什么是 Spring 框架?Spring 框架有哪些主要模塊?
2、使用 Spring 框架能帶來(lái)哪些好處?
3、什么是控制反轉(zhuǎn)(IOC)?什么是依賴注入?
4、請(qǐng)解釋下 Spring 框架中的 IoC?
5、BeanFactory 和 ApplicationContext 有什么區(qū)別?
6、Spring 有幾種配置方式?
7、如何用基于 XML 配置的方式配置 Spring?
8、如何用基于 Java 配置的方式配置 Spring?
9、怎樣用注解的方式配置 Spring?
10、請(qǐng)解釋 Spring Bean 的生命周期?
1、什么是 Spring 框架?Spring 框架有哪些主要模塊?
Spring 框架是一個(gè)為 Java 應(yīng)用程序的開發(fā)提供了綜合、廣泛的基礎(chǔ)性支持的 Java 平臺(tái)。Spring 幫助開發(fā)者解決了開發(fā)中基礎(chǔ)性的問(wèn)題,使得開發(fā)人員可以專注于應(yīng)用程序的開發(fā)。Spring 框架本身亦是按照設(shè)計(jì)模式精心打造,這使得我們可以在開發(fā)環(huán)境中安心的集成Spring 框架,不必?fù)?dān)心 Spring 是如何在后臺(tái)進(jìn)行工作的。Spring 框架至今已集成了 20 多個(gè)模塊。這些模塊主要被分如下圖所示的核心容器、數(shù)據(jù)訪問(wèn)/集成,、Web、AOP(面向切面編程)、工具、消息和測(cè)試模塊。
2、使用 Spring 框架能帶來(lái)哪些好處?
下面列舉了一些使用 Spring 框架帶來(lái)的主要好處:
Dependency Injection(DI) 方法使得構(gòu)造器和 JavaBean properties 文件中的依賴關(guān)系一目了然。
與 EJB 容器相比較,IoC 容器更加趨向于輕量級(jí)。這樣一來(lái)IoC 容器在有限的內(nèi)存和 CPU 資源的情況下進(jìn)行應(yīng)用程序的開發(fā)和發(fā)布就變得十分有利。
Spring 并沒(méi)有閉門造車,Spring 利用了已有的技術(shù)比如ORM 框架、logging 框架、J2EE、Quartz 和 JDK Timer,以及其他視圖技術(shù)。
Spring 框架是按照模塊的形式來(lái)組織的。由包和類的編號(hào)就可以看出其所屬的模塊,開發(fā)者僅僅需要選用他們需要的模塊即可。
要測(cè)試一項(xiàng)用 Spring 開發(fā)的應(yīng)用程序十分簡(jiǎn)單,因?yàn)闇y(cè)試相關(guān)的環(huán)境代碼都已經(jīng)囊括在框架中了。更加簡(jiǎn)單的是,利用JavaBean 形式的 POJO 類,可以很方便的利用依賴注入來(lái)寫入測(cè)試數(shù)據(jù)。
Spring 的 Web 框架亦是一個(gè)精心設(shè)計(jì)的 Web MVC 框架,為開發(fā)者們?cè)?web 框架的選擇上提供了一個(gè)除了主流框架比如Struts、過(guò)度設(shè)計(jì)的、不流行 web 框架的以外的有力選項(xiàng)。
Spring 提供了一個(gè)便捷的事務(wù)管理接口,適用于小型的本地事物處理(比如在單 DB 的環(huán)境下)和復(fù)雜的共同事物處理(比如利用 JTA 的復(fù)雜 DB 環(huán)境)。
3、什么是控制反轉(zhuǎn)(IOC)?什么是依賴注入?
控制反轉(zhuǎn)是應(yīng)用于軟件工程領(lǐng)域中的,在運(yùn)行時(shí)被裝配器對(duì)象來(lái)綁定耦合對(duì)象的一種編程技巧,對(duì)象之間耦合關(guān)系在編譯時(shí)通常是未知的。在傳統(tǒng)的編程方式中,業(yè)務(wù)邏輯的流程是由應(yīng)用程序中的早已被設(shè)定好關(guān)聯(lián)關(guān)系的對(duì)象來(lái)決定的。在使用控制反轉(zhuǎn)的情況下,業(yè)務(wù)邏輯的流程是由對(duì)象關(guān)系圖來(lái)決定的,該對(duì)象關(guān)系圖由裝配器負(fù)責(zé)實(shí)例化,這種實(shí)現(xiàn)方式還可以將對(duì)象之間的關(guān)聯(lián)關(guān)系的定義抽象化。而綁定的過(guò)程是通過(guò)“依賴注入”實(shí)現(xiàn)的。
控制反轉(zhuǎn)是一種以給予應(yīng)用程序中目標(biāo)組件更多控制為目的設(shè)計(jì)范式,并在我們的實(shí)際工作中起到了有效的作用。
依賴注入是在編譯階段尚未知所需的功能是來(lái)自哪個(gè)的類的情況下,將其他對(duì)象所依賴的功能對(duì)象實(shí)例化的模式。這就需要一種機(jī)制用來(lái)激活相應(yīng)的組件以提供特定的功能,所以依賴注入是控制反轉(zhuǎn)的基礎(chǔ)。否則如果在組件不受框架控制的情況下,框架又怎么知道要?jiǎng)?chuàng)建哪個(gè)組件?
在 Java 中依然注入有以下三種實(shí)現(xiàn)方式:
構(gòu)造器注入
Setter 方法注入
接口注入
4、請(qǐng)解釋下 Spring 框架中的 IoC?
Spring 中的 org.spring framework.beans 包和org.spring framework.context 包構(gòu)成了 Spring 框架 IoC 容器的基礎(chǔ)。
Bean Factory 接口提供了一個(gè)先進(jìn)的配置機(jī)制,使得任何類型的對(duì)象的配置成為可能。Application Context 接口對(duì)Bean Factory(是一個(gè)子接口)進(jìn)行了擴(kuò)展,在 Bean Factory 的基礎(chǔ)上添加了其他功能,比如與 Spring 的 AOP 更容易集成,也提供了處理 message resource 的機(jī)制(用于國(guó)際化)、事件傳播以及應(yīng)用層的特別配置,比如針對(duì) Web 應(yīng)用的 Web Application Context。
org.spring framework.beans.factory.Bean Factory 是 Spring IOC 容器的具體實(shí)現(xiàn),用來(lái)包裝和管理前面提到的各種bean Bean Factory 接口是 Spring IoC 容器的核心接口。
5、Bean Factory 和 Application Context 有什么區(qū)別?
Bean Factory 可以理解為含有 bean 集合的工廠類。Bean Factory 包含了種 bean 的定義,以便在接收到客戶端請(qǐng)求時(shí)將對(duì)應(yīng)的 bean 實(shí)例化。
Bean Factory 還能在實(shí)例化對(duì)象的時(shí)生成協(xié)作類之間的關(guān)系。此舉將 bean 自身與 bean 客戶端的配置中解放出來(lái)。Bean Factory 還包含了 bean 生命周期的控制,調(diào)用客戶端的初始化方法(initialization methods)和銷毀方法(destruction methods)。
從表面上看,application context 如同 bean factory 一樣具有 bean 定義、bean 關(guān)聯(lián)關(guān)系的設(shè)置,根據(jù)請(qǐng)求分發(fā) bean 的功能。但 application context 在此基礎(chǔ)上還提供了其他的功能。
提供了支持國(guó)際化的文本消息
統(tǒng)一的資源文件讀取方式
以下是三種較常見的Application Context 實(shí)現(xiàn)方式:
(1)Class PathXml Application Context:從 classpath 的 XML 配置文件中讀取上下文,并生成上下文定義。應(yīng)用程序上下文從程序環(huán)境變量中取得。
ApplicationContext context = new
ClassPathXmlApplicationContext(“bean.xml”);
(2)File System XML Application Context :由文件系統(tǒng)中的XML 配置文件讀取上下文。
1\. ApplicationContext context = new
FileSystemXmlApplicationContext(“bean.xml”);
(3)XML Web Application Context:由 Web 應(yīng)用的 XML 文件讀取上下文。
由于篇幅限制,剩下的將以圖片形式展示,對(duì)文章中學(xué)習(xí)腦圖感興趣的可以 加微信獲?。?3272413561
1、Spring Bean 的作用域之間有什么區(qū)別?
2、什么是 Spring inner beans?
3、Spring 框架中的單例 Beans 是線程安全的么?
4、請(qǐng)舉例說(shuō)明如何在Spring中注入一個(gè)JavaCollection?
5、如何向SpringBean中注入一個(gè)Java.util.Properties?
6、請(qǐng)解釋SpringBean的自動(dòng)裝配?
7、請(qǐng)解釋自動(dòng)裝配模式的區(qū)別?
8、如何開啟基于注解的自動(dòng)裝配?
9、請(qǐng)舉例解釋@Required注解?
10、請(qǐng)舉例解釋@Autowired注解?
11、請(qǐng)舉例說(shuō)明@Qualifier注解?
12、構(gòu)造方法注入和設(shè)值注入有什么區(qū)別?
13、Spring框架中有哪些不同類型的事件?
14、FileSystemResource和ClassPathResource有何區(qū)別?
15、Spring框架中都用到了哪些設(shè)計(jì)模式?
對(duì)文章中學(xué)習(xí)腦圖感興趣的可以 加微信獲?。?3272413561,還有更多面試題整理中,可以一并獲取。
獲取方式:https://shimo.im/docs/TC9Jq63Tp6HvTXdg/