更新時間:2020-03-24 10:33:01 來源:動力節(jié)點 瀏覽2766次
什么是Spring框架?Spring框架有哪些主要模塊?
Spring框架是一個為Java應(yīng)用程序的開發(fā)提供了綜合、廣泛的基礎(chǔ)性支持的Java平臺。Spring幫助開發(fā)者解決了開發(fā)中基礎(chǔ)性的問題,使得開發(fā)人員可以專注于應(yīng)用程序的開發(fā)。Spring框架本身亦是按照設(shè)計模式精心打造,這使得我們可以在開發(fā)環(huán)境中安心的集成Spring框架,不必擔(dān)心Spring是如何在后臺進行工作的。
Spring框架至今已集成了20多個模塊。這些模塊主要被分如下圖所示的核心容器、數(shù)據(jù)訪問/集成,、Web、AOP(面向切面編程)、工具、消息和測試模塊。
使用Spring框架能帶來哪些好處?
DependencyInjection(DI)方法使得構(gòu)造器和JavaBeanproperties文件中的依賴關(guān)系一目了然。與EJB容器相比較,IoC容器更加趨向于輕量級。這樣一來IoC容器在有限的內(nèi)存和CPU資源的情況下進行應(yīng)用程序的開發(fā)和發(fā)布就變得十分有利。Spring并沒有閉門造車,Spring利用了已有的技術(shù)比如ORM框架、logging框架、J2EE、Quartz和JDKTimer,以及其他視圖技術(shù)。Spring框架是按照模塊的形式來組織的。由包和類的編號就可以看出其所屬的模塊,開發(fā)者僅僅需要選用他們需要的模塊即可。要測試一項用Spring開發(fā)的應(yīng)用程序十分簡單,因為測試相關(guān)的環(huán)境代碼都已經(jīng)囊括在框架中了。更加簡單的是,利用JavaBean形式的POJO類,可以很方便的利用依賴注入來寫入測試數(shù)據(jù)。Spring的Web框架亦是一個精心設(shè)計的WebMVC框架,為開發(fā)者們在web框架的選擇上提供了一個除了主流框架比如Struts、過度設(shè)計的、不流行web框架的以外的有力選項。Spring提供了一個便捷的事務(wù)管理接口,適用于小型的本地事物處理(比如在單DB的環(huán)境下)和復(fù)雜的共同事物處理(比如利用JTA的復(fù)雜DB環(huán)境)。
什么是控制反轉(zhuǎn)(IOC)?什么是依賴注入?
控制反轉(zhuǎn)是應(yīng)用于軟件工程領(lǐng)域中的,在運行時被裝配器對象來綁定耦合對象的一種編程技巧,對象之間耦合關(guān)系在編譯時通常是未知的。在傳統(tǒng)的編程方式中,業(yè)務(wù)邏輯的流程是由應(yīng)用程序中的早已被設(shè)定好關(guān)聯(lián)關(guān)系的對象來決定的。在使用控制反轉(zhuǎn)的情況下,業(yè)務(wù)邏輯的流程是由對象關(guān)系圖來決定的,該對象關(guān)系圖由裝配器負責(zé)實例化,這種實現(xiàn)方式還可以將對象之間的關(guān)聯(lián)關(guān)系的定義抽象化。而綁定的過程是通過“依賴注入”實現(xiàn)的。
控制反轉(zhuǎn)是一種以給予應(yīng)用程序中目標(biāo)組件更多控制為目的設(shè)計范式,并在我們的實際工作中起到了有效的作用。
依賴注入是在編譯階段尚未知所需的功能是來自哪個的類的情況下,將其他對象所依賴的功能對象實例化的模式。這就需要一種機制用來激活相應(yīng)的組件以提供特定的功能,所以依賴注入是控制反轉(zhuǎn)的基礎(chǔ)。否則如果在組件不受框架控制的情況下,框架又怎么知道要創(chuàng)建哪個組件?
在Java中依然注入有以下三種實現(xiàn)方式:
1.構(gòu)造器注入2.Setter方法注入3.接口注入
Spring有幾種配置方式?
將Spring配置到應(yīng)用開發(fā)中有以下三種方式:
1.基于XML的配置2.基于注解的配置3.基于Java的配置
SpringBean的作用域之間有什么區(qū)別?
Spring容器中的bean可以分為5個范圍。所有范圍的名稱都是自說明的,但是為了避免混淆,我還是來解釋一下:singleton:這種bean范圍是默認的,這種范圍確保不管接受到多少個請求,每個容器中只有一個bean的實例,單例的模式由beanfactory自身來維護。prototype:原形范圍與單例范圍相反,為每一個bean請求提供一個實例。request:在請求bean范圍內(nèi)會每一個來自客戶端的網(wǎng)絡(luò)請求創(chuàng)建一個實例,在請求完成以后,bean會失效并被垃圾回收器回收。Session:與請求范圍類似,確保每個session中有一個bean的實例,在session過期后,bean會隨之失效。global-session:global-session和Portlet應(yīng)用相關(guān)。當(dāng)你的應(yīng)用部署在Portlet容器中工作時,它包含很多portlet。如果你想要聲明讓所有的portlet共用全局的存儲變量的話,那么這全局變量需要存儲在global-session中。全局作用域與Servlet中的session作用域效果相同。
Spring框架中的單例Beans是線程安全的么?
Spring框架并沒有對單例bean進行任何多線程的封裝處理。關(guān)于單例bean的線程安全和并發(fā)問題需要開發(fā)者自行去搞定。但實際上,大部分的Springbean并沒有可變的狀態(tài)(比如Serview類和DAO類),所以在某種程度上說Spring的單例bean是線程安全的。如果你的bean有多種狀態(tài)的話(比如ViewModel對象),就需要自行保證線程安全。最淺顯的解決辦法就是將多態(tài)bean的作用域由“singleton”變更為“prototype”
以上就是動力節(jié)點Java培訓(xùn)機構(gòu)小編介紹的“2020年最新Java框架的面試題總結(jié)”的內(nèi)容,希望對大家有幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務(wù)。
相關(guān)閱讀
0基礎(chǔ) 0學(xué)費 15天面授
有基礎(chǔ) 直達就業(yè)
業(yè)余時間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請后,顧問老師會電話與您溝通安排學(xué)習(xí)