Spring的面試題有哪些

這篇文章給大家分享的是有關(guān)Spring的面試題有哪些的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于網(wǎng)站制作、網(wǎng)站建設(shè)、武安網(wǎng)絡(luò)推廣、小程序開發(fā)、武安網(wǎng)絡(luò)營銷、武安企業(yè)策劃、武安品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎;創(chuàng)新互聯(lián)為所有大學生創(chuàng)業(yè)者提供武安建站搭建服務(wù),24小時服務(wù)熱線:13518219792,官方網(wǎng)址:muchs.cn

一、什么是Spring框架?Spring框架有哪些主要模塊?

Spring框架是一個為Java應用程序的開發(fā)提供了綜合、廣泛的基礎(chǔ)性支持的Java平臺。Spring幫助開發(fā)者解決了開發(fā)中基礎(chǔ)性的問題,使得開發(fā)人員可以專注于應用程序的開發(fā)。

Spring框架本身亦是按照設(shè)計模式精心打造,這使得我們可以在開發(fā)環(huán)境中安心的集成Spring框架,不必擔心Spring是如何在后臺進行工作的。

Spring框架至今已集成了20多個模塊。這些模塊主要被分如下圖所示的核心容器、數(shù)據(jù)訪問/集成,、Web、AOP(面向切面編程)、工具、消息和測試模塊。

二、使用Spring框架能帶來哪些好處?

下面列舉了一些使用Spring框架帶來的主要好處:

1、Dependency Injection(DI) 方法使得構(gòu)造器和JavaBean properties文件中的依賴關(guān)系一目了然。

2、與EJB容器相比較,IoC容器更加趨向于輕量級。這樣一來IoC容器在有限的內(nèi)存和CPU資源的情況下進行應用程序的開發(fā)和發(fā)布就變得十分有利。

3、Spring并沒有閉門造車,Spring利用了已有的技術(shù)比如ORM框架、logging框架、J2EE、Quartz和JDK Timer,以及其他視圖技術(shù)。

4、Spring框架是按照模塊的形式來組織的。由包和類的編號就可以看出其所屬的模塊,開發(fā)者僅僅需要選用他們需要的模塊即可。

5、要測試一項用Spring開發(fā)的應用程序十分簡單,因為測試相關(guān)的環(huán)境代碼都已經(jīng)囊括在框架中了。更加簡單的是,利用JavaBean形式的POJO類,可以很方便的利用依賴注入來寫入測試數(shù)據(jù)。

6、Spring的Web框架亦是一個精心設(shè)計的Web MVC框架,為開發(fā)者們在web框架的選擇上提供了一個除了主流框架比如Struts、過度設(shè)計的、不流行web框架的以外的有力選項。

7、Spring提供了一個便捷的事務(wù)管理接口,適用于小型的本地事物處理(比如在單DB的環(huán)境下)和復雜的共同事物處理(比如利用JTA的復雜DB環(huán)境)。

三、什么是控制反轉(zhuǎn)(IOC)?什么是依賴注入?

1、控制反轉(zhuǎn)是應用于軟件工程領(lǐng)域中的,在運行時被裝配器對象來綁定耦合對象的一種編程技巧,對象之間耦合關(guān)系在編譯時通常是未知的。

在傳統(tǒng)的編程方式中,業(yè)務(wù)邏輯的流程是由應用程序中的早已被設(shè)定好關(guān)聯(lián)關(guān)系的對象來決定的。

在使用控制反轉(zhuǎn)的情況下,業(yè)務(wù)邏輯的流程是由對象關(guān)系圖來決定的,該對象關(guān)系圖由裝配器負責實例化,這種實現(xiàn)方式還可以將對象之間的關(guān)聯(lián)關(guān)系的定義抽象化。而綁定的過程是通過“依賴注入”實現(xiàn)的。

2、控制反轉(zhuǎn)是一種以給予應用程序中目標組件更多控制為目的設(shè)計范式,并在我們的實際工作中起到了有效的作用。

3、依賴注入是在編譯階段尚未知所需的功能是來自哪個的類的情況下,將其他對象所依賴的功能對象實例化的模式。

這就需要一種機制用來激活相應的組件以提供特定的功能,所以依賴注入是控制反轉(zhuǎn)的基礎(chǔ)。否則如果在組件不受框架控制的情況下,框架又怎么知道要創(chuàng)建哪個組件?

4、在Java中依然注入有以下三種實現(xiàn)方式:

1)構(gòu)造器注入;

2)Setter方法注入;

3)接口注入;

四、請解釋下Spring框架中的IoC?

Spring中的 org.springframework.beans 包和 org.springframework.context包構(gòu)成了Spring框架IoC容器的基礎(chǔ)。

BeanFactory接口提供了一個先進的配置機制,使得任何類型的對象的配置成為可能。ApplicationContex接口對BeanFactory(是一個子接口)進行了擴展.

在BeanFactory的基礎(chǔ)上添加了其他功能,比如與Spring的AOP更容易集成,也提供了處理message resource的機制(用于國際化)、事件傳播以及應用層的特別配置,比如針對Web應用的WebApplicationContext。

五、BeanFactory和ApplicationContext有什么區(qū)別?

BeanFactory 可以理解為含有bean集合的工廠類。BeanFactory 包含了種bean的定義,以便在接收到客戶端請求時將對應的bean實例化。

BeanFactory還能在實例化對象的時生成協(xié)作類之間的關(guān)系。此舉將bean自身與bean客戶端的配置中解放出來。BeanFactory還包含了bean生命周期的控制,調(diào)用客戶端的初始化方法(initialization methods)和銷毀方法(destruction methods)。

從表面上看,application context如同bean factory一樣具有bean定義、bean關(guān)聯(lián)關(guān)系的設(shè)置,根據(jù)請求分發(fā)bean的功能。但application context在此基礎(chǔ)上還提供了其他的功能:

1)提供了支持國際化的文本消息;

2)統(tǒng)一的資源文件讀取方式;

3)已在監(jiān)聽器中注冊的bean的事件;

六、Spring有幾種配置方式?

將Spring配置到應用開發(fā)中有以下三種方式:

1)基于XML的配置

2)基于注解的配置

3)基于Java的配置

七、如何用基于XML配置的方式配置Spring?

在Spring框架中,依賴和服務(wù)需要在專門的配置文件來實現(xiàn),我常用的XML格式的配置文件。這些配置文件的格式通常用開頭,然后一系列的bean定義和專門的應用配置選項組成。

SpringXML配置的主要目的時候是使所有的Spring組件都可以用xml文件的形式來進行配置。這意味著不會出現(xiàn)其他的Spring配置類型(比如聲明的方式或基于Java Class的配置方式)

Spring的XML配置方式是使用被Spring命名空間的所支持的一系列的XML標簽來實現(xiàn)的。Spring有以下主要的命名空間:context、beans、jdbc、tx、aop、mvc和aso。

八、怎樣用注解的方式配置Spring?

Spring在2.5版本以后開始支持用注解的方式來配置依賴注入??梢杂米⒔獾姆绞絹硖娲鶻ML方式的bean描述,可以將bean描述轉(zhuǎn)移到組件類的內(nèi)部,只需要在相關(guān)類上、方法上或者字段聲明上使用注解即可。

注解注入將會被容器在XML注入之前被處理,所以后者會覆蓋掉前者對于同一個屬性的處理結(jié)果。

注解裝配在Spring中是默認關(guān)閉的。所以需要在Spring文件中配置一下才能使用基于注解的裝配模式。如果你想要在你的應用程序中使用關(guān)于注解的方法的話,請參考如下的配置。

在 標簽配置完成以后,就可以用注解的方式在Spring中向?qū)傩?、方法和?gòu)造方法中自動裝配變量。

下面是幾種比較重要的注解類型:

1)@Required:該注解應用于設(shè)值方法。

2)@Autowired:該注解應用于有值設(shè)值方法、非設(shè)值方法、構(gòu)造方法和變量。

3)@Qualifier:該注解和@Autowired注解搭配使用,用于消除特定bean自動裝配的歧義。

4)JSR-250 Annotations:Spring支持基于JSR-250 注解的以下注解,@Resource、@PostConstruct 和 @PreDestroy。

九、請解釋Spring Bean的生命周期

Spring Bean的生命周期簡單易懂。在一個bean實例被初始化時,需要執(zhí)行一系列的初始化操作以達到可用的狀態(tài)。

同樣的,當一個bean不在被調(diào)用時需要進行相關(guān)的析構(gòu)操作,并從bean容器中移除。

Spring bean factory 負責管理在spring容器中被創(chuàng)建的bean的生命周期。Bean的生命周期由兩組回調(diào)(call back)方法組成。

1)初始化之后調(diào)用的回調(diào)方法。

2)銷毀之前調(diào)用的回調(diào)方法。

Spring框架提供了以下四種方式來管理bean的生命周期事件:

1)InitializingBean和DisposableBean回調(diào)接口

2)針對特殊行為的其他Aware接口

3)Bean配置文件中的Custom init()方法和destroy()方法

4)@PostConstruct和@PreDestroy注解方式

使用customInit()和 customDestroy()方法管理bean生命周期的代碼樣例如下:

十、Spring Bean的作用域之間有什么區(qū)別?

Spring容器中的bean可以分為5個范圍。所有范圍的名稱都是自說明的,但是為了避免混淆,還是讓我們來解釋一下:

1)singleton:這種bean范圍是默認的,這種范圍確保不管接受到多少個請求,每個容器中只有一個bean的實例,單例的模式由bean factory自身來維護。

2)prototype:原形范圍與單例范圍相反,為每一個bean請求提供一個實例。

3)request:在請求bean范圍內(nèi)會每一個來自客戶端的網(wǎng)絡(luò)請求創(chuàng)建一個實例,在請求完成以后,bean會失效并被垃圾回收器回收。

4)Session:與請求范圍類似,確保每個session中有一個bean的實例,在session過期后,bean會隨之失效。

5)global-session:global-session和Portlet應用相關(guān)。當你的應用部署在Portlet容器中工作時,它包含很多portlet。如果你想要聲明讓所有的portlet共用全局的存儲變量的話,那么這全局變量需要存儲在global-session中。

全局作用域與Servlet中的session作用域效果相同。

十一、什么是Spring beans?

Spring beans 是那些形成Spring應用的主干的java對象。它們被Spring IOC容器初始化,裝配,和管理。這些beans通過容器中配置的元數(shù)據(jù)創(chuàng)建。比如,以XML文件中的形式定義。

Spring 框架定義的beans都是單件beans。在bean tag中有個屬性”singleton”,如果它被賦為TRUE,bean 就是單件,否則就是一個 prototype bean。默認是TRUE,所以所有在Spring框架中的beans 缺省都是單件。

十二、解釋Spring支持的幾種bean的作用域

Spring框架支持以下五種bean的作用域:

1)singleton : bean在每個Spring ioc 容器中只有一個實例。

2)prototype:一個bean的定義可以有多個實例。

3)request:每次http請求都會創(chuàng)建一個bean,該作用域僅在基于web的Spring ApplicationContext情形下有效。

4)session:在一個HTTP Session中,一個bean定義對應一個實例。該作用域僅在基于web的Spring ApplicationContext情形下有效。

5)global-session:在一個全局的HTTP Session中,一個bean定義對應一個實例。該作用域僅在基于web的Spring ApplicationContext情形下有效。

缺省的Spring bean 的作用域是Singleton。

十三、解釋Spring框架中bean的生命周期

Spring容器 從XML 文件中讀取bean的定義,并實例化bean。

Spring根據(jù)bean的定義填充所有的屬性。

如果bean實現(xiàn)了BeanNameAware 接口,Spring 傳遞bean 的ID 到 setBeanName方法。

如果Bean 實現(xiàn)了 BeanFactoryAware 接口, Spring傳遞beanfactory 給setBeanFactory 方法。

如果有任何與bean相關(guān)聯(lián)的BeanPostProcessors,Spring會在postProcesserBeforeInitialization()方法內(nèi)調(diào)用它們。

如果bean實現(xiàn)IntializingBean了,調(diào)用它的afterPropertySet方法,如果bean聲明了初始化方法,調(diào)用此初始化方法。

如果有BeanPostProcessors 和bean 關(guān)聯(lián),這些bean的postProcessAfterInitialization() 方法將被調(diào)用。

如果bean實現(xiàn)了 DisposableBean,它將調(diào)用destroy()方法。

十四、哪些是重要的bean生命周期方法? 你能重載它們嗎?

有兩個重要的bean 生命周期方法,第一個是setup , 它是在容器加載bean的時候被調(diào)用。第二個方法是 teardown 它是在容器卸載類的時候被調(diào)用。

The bean 標簽有兩個重要的屬性(init-method和destroy-method)。用它們你可以自己定制初始化和注銷方法。它們也有相應的注解(@PostConstruct和@PreDestroy)。

十五、什么是Spring的內(nèi)部bean?

當一個bean僅被用作另一個bean的屬性時,它能被聲明為一個內(nèi)部bean,為了定義inner bean,在Spring 的 基于XML的 配置元數(shù)據(jù)中,可以在或 元素內(nèi)使用元素,內(nèi)部bean通常是匿名的,它們的Scope一般是prototype。

十六、在 Spring中如何注入一個java集合?

Spring提供以下幾種集合的配置元素:

類型用于注入一列值,允許有相同的值。

類型用于注入一組值,不允許有相同的值。

類型用于注入一組鍵值對,鍵和值都可以為任意類型。

類型用于注入一組鍵值對,鍵和值都只能為String類型。

十七、什么是bean裝配?

裝配,或bean 裝配是指在Spring 容器中把bean組裝到一起,前提是容器需要知道bean的依賴關(guān)系,如何通過依賴注入來把它們裝配到一起。

十八、什么是bean的自動裝配?

Spring 容器能夠自動裝配相互合作的bean,這意味著容器不需要和配置,能通過Bean工廠自動處理bean之間的協(xié)作。

感謝各位的閱讀!關(guān)于“Spring的面試題有哪些”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

網(wǎng)頁題目:Spring的面試題有哪些
網(wǎng)頁地址:http://muchs.cn/article42/ishohc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營銷型網(wǎng)站建設(shè)、定制網(wǎng)站用戶體驗、網(wǎng)站內(nèi)鏈網(wǎng)站導航、ChatGPT

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)