更新時間:2020-02-06 10:29:40 來源:動力節點 瀏覽3489次
Spring是一個輕量級的IOC和AOP容器框架,是為Java應用程序提供基礎性服務的一套框架,目的是用于簡化企業應用程序的開發。隨著Spring框架在企業中的廣泛應用,Java程序員在面試過程中也經常被提問對Spring的掌握。以下是小編整理的Spring面試題解析,希望能夠給大家帶來幫助。
Spring的優點?
1)spring屬于低侵入式設計,代碼的污染極低;
2)spring的DI機制將對象之間的依賴關系交由框架處理,減低組件的耦合性;
3)Spring提供了AOP技術,支持將一些通用任務,如安全、事務、日志、權限等進行集中式管理,從而提供更好的復用;
4)spring對于主流的應用框架提供了集成支持。
IOC是什么?
IOC(InversionOfControll,控制反轉)是一種設計思想,將原本在程序中手動創建對象的控制權,交由給Spring框架來管理。IOC容器是Spring用來實現IOC的載體,IOC容器實際上就是一個Map(key、value),Map中存放的是各種對象。
這樣可以很大程度上簡化應用的開發,把應用從復雜的依賴關系中解放出來。IOC容器就像是一個工廠,當需要創建一個對象,只需要配置好配置文件/注解即可,不用考慮對象是如何被創建出來的,大大增加了項目的可維護性且降低了開發難度。
AOP是什么?
AOP(Aspect-OrientedProgramming,面向切面編程)能夠將那些與業務無關,卻為業務模塊所共同調用的邏輯或責任(例如事務處理、日志管理、權限控制等)封裝起來,便于減少系統的重復代碼,降低模塊間的耦合度,并有利于未來的可擴展性和可維護性。使用AOP之后我們可以把一些通用功能抽象出來,在需要用到的地方直接使用即可,這樣可以大大簡化代碼量,提高了系統的擴展性。
SpringAOP是基于動態代理的,如果要代理的對象實現了某個接口,那么SpringAOP就會使用JDK動態代理去創建代理對象;而對于沒有實現接口的對象,就無法使用JDK動態代理,轉而使用CGlib動態代理生成一個被代理對象的子類來作為代理。
BeanFactory和ApplicationContext有什么區別?
1)BeanFactory是Spring里面最底層的接口,包含了各種Bean的定義,讀取bean配置文檔,管理bean的加載、實例化,控制bean的生命周期,維護bean之間的依賴關系。ApplicationContext接口作為BeanFactory的派生,除了提供BeanFactory所具有的功能外,還提供了更完整的框架功能。
2)BeanFactroy采用的是延遲加載形式來注入Bean的,即只有在使用到某個Bean時(調用getBean()),才對該Bean進行加載實例化。ApplicationContext是在容器啟動時,一次性創建了所有的Bean。這樣在容器啟動時,我們就可以發現Spring中存在的配置錯誤,這樣有利于檢查所依賴屬性是否注。
3)BeanFactory通常以編程的方式被創建,ApplicationContext還能以聲明的方式創建,如使用ContextLoader。
4)BeanFactory和ApplicationContext都支持BeanPostProcessor、BeanFactoryPostProcessor的使用,但兩者之間的區別是:BeanFactory需要手動注冊,而ApplicationContext則是自動注冊。
SpringAOP/AspectJAOP的區別?
1)SpringAOP屬于運行時增強,而AspectJ是編譯時增強;
2)SpringAOP基于代理(Proxying),而AspectJ基于字節碼操作(BytecodeManipulation);
3)AspectJ相比于SpringAOP功能更加強大,但是SpringAOP相對來說更簡單。如果切面比較少,那么兩者性能差異不大。但是,當切面太多的話,最好選擇AspectJ,它比SpringAOP快很多。
Spring支持幾種bean的作用域?
1)singleton:默認,每個容器中只有一個bean的實例,單例的模式由BeanFactory自身來維護。
2)prototype:為每一個bean請求提供一個實例。
3)request:為每一個網絡請求創建一個實例,在請求完成以后,bean會失效并被垃圾回收器回收。
4)session:與request范圍類似,確保每個session中有一個bean的實例,在session過期后,bean會隨之失效。
5)global-session:全局作用域,global-session和Portlet應用相關。當你的應用部署在Portlet容器中工作時,它包含很多portlet。如果你想要聲明讓所有的portlet共用全局的存儲變量的話,那么這全局變量需要存儲在global-session中。全局作用域與Servlet中的session作用域效果相同。
當然,不同的企業對于求職者的技能需求也會有所不同,考察的重點也不盡相同的。
以上就是動力節點Java培訓機構小編介紹的“Java框架面試題總結-Spring框架面試”的內容,希望對大家有幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。
相關推薦
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習