- 相關(guān)推薦
Spring常見面試問題
Spring
1. Spring工作機制及為什么要用?
Spring 是一個開源框架,是為了解決企業(yè)應(yīng)用程序開發(fā)復(fù)雜性而創(chuàng)建的。Spring既是一個AOp框架,也是一IOC容器。
SpringFramework的組成:Spring AOp,Spring DAO,Spring ORM,Spring Web,Spring Context, Spring Web MVC。
Spring的核心就是IOC和AOp,所以Spring的工作機制簡單的理解也就是IOC和AOp的工作機制。
借助于Spring AOp,Spring IoC能夠很方便的使用到非常健壯、靈活的企業(yè)級服務(wù),通過使用IoC能夠降低組件之間的耦合度,最終,能夠提高類的重用性,利于測試,而且更利于整個產(chǎn)品或系統(tǒng)集成和配置。
2. 說說AOp和IOC的概念以及在spring中是如何應(yīng)用的?
AOp,Aspect Oriented program,面向(方面)切面的編程;
IOC,Invert Of Control,控制反轉(zhuǎn)。
簡單說一下,IOC就是其實就是依賴注入,即用接口編程,在程序中不出現(xiàn)new關(guān)鍵字,而是用接口來命名引用,然后通過某種方式把接口的某個實現(xiàn)類的實例注入到引用里,從而實現(xiàn)接口與具體實現(xiàn)類的松耦合。
由容器控制程序之間的關(guān)系(通過XML配置),而非傳統(tǒng)實現(xiàn)中的由程序代碼直接操控,(在一個Class對象中引用另一個Class對象時,我們通常都是直接通過new contructor)。控制權(quán)由應(yīng)用代碼中轉(zhuǎn)到了外部容器,控制權(quán)的轉(zhuǎn)移,是所謂的反轉(zhuǎn)。
AOp方式很類似filter,就是在程序正常的業(yè)務(wù)流中間像切面一樣插入很多其他需要執(zhí)行的代碼,比如登錄時候,在進入登錄頁面前寫入日志,很常用的,尤其是跟數(shù)據(jù)庫有關(guān)的,或者跟支付有關(guān)的程序肯定會在每一步前面插入日志。
面向方面的編程,即 AOp,是一種編程技術(shù),它允許程序員對橫切關(guān)注點或橫切典型的職責(zé)分界線的行為(例如日志和事務(wù)管理)進行模塊化。AOp 的核心構(gòu)造是方面,它將那些影響多個類的行為封裝到可重用的模塊中。
AOp Advice(AOp通知)分為:
前置通知
后置通知
異常通知
環(huán)繞通知
3. Spring的事物有幾種方式?談?wù)?span lang=\"EN-US\">spring事物的隔離級別和傳播行為?
聲明式事務(wù) 使用spring聲明式事務(wù),spring使用AOp來支持聲明式事務(wù),會根據(jù)事務(wù)屬性,自動在方法調(diào)用之前決定是否開啟一個事務(wù),并在方法執(zhí)行之后決定事務(wù)提交或回滾事務(wù)。
事務(wù)的隔離級別:
數(shù)據(jù)庫系統(tǒng)提供了4種事務(wù)隔離級別,在這4種隔離級別中,Serializable的隔離級別最高,Read Uncommitted的隔離級別最低;
· Read Uncommitted 讀未提交數(shù)據(jù);(會出現(xiàn)臟讀)
· Read Committed 讀已提交數(shù)據(jù);
· Repeatable Read 可重復(fù)讀;
· Serializable 串行化
事務(wù)的傳播屬性包括:
· Required 業(yè)務(wù)方法需要在一個事務(wù)中運行,如果一個方法運行時已經(jīng)處在一個事務(wù)中,那么加入到該事務(wù),否則為自己創(chuàng)建一個新事務(wù),80%的方法用到該傳播屬性;
· Not-Supported
· Requiresnew
· Mandatoky
· Supports
· Never
· Nested
4. Spring的優(yōu)點和缺點?
⑴Spring的優(yōu)點:
① Spring能有效地組織你的中間層對象,不管你是否選擇使用了EJB;
② Spring能消除在許多工程中常見的對Singleton的過多使用。(因為它降低了系統(tǒng)的可測試性和面向?qū)ο蟮某潭?span lang=\"EN-US\">);
③ 通過一種在不同應(yīng)用程序和項目間一致的方法來處理配置文件,Spring能消除各種各樣自定義格式的屬性文件的需要。Inversion of Control的使用幫助完成了這種簡化;
④ 通過把對接口編程而不是對類編程的代價幾乎減少到?jīng)]有,Spring能夠促進養(yǎng)成好的編程習(xí)慣;
⑤ Spring被設(shè)計為讓使用它創(chuàng)建的應(yīng)用盡可能少的依賴于他的ApIs。在Spring應(yīng)用中的大多數(shù)業(yè)務(wù)對象沒有依賴于Spring;
⑥ 使用Spring構(gòu)建的應(yīng)用程序易于單元測試;
⑦ Spring能使EJB的使用成為一個實現(xiàn)選擇,而不是應(yīng)用架構(gòu)的必然選擇。你能選擇用pOJOs或local EJBs來實現(xiàn)業(yè)務(wù)接口,卻不會影響調(diào)用代碼;
⑧ Spring幫助你解決許多問題而無需使用EJB。Spring能提供一種EJB的替換物,他們適用于許多web應(yīng)用。例如:Spring能使用AOp提供聲明性事務(wù)管理而不通過EJB容器;
⑨ Spring為數(shù)據(jù)存取提供了一個一致的框架不論使用的是JDBC還是O/R mapping產(chǎn)品;
⑵Spring的缺點:
① 使用人數(shù)不多,jsp中要寫很多代碼;
② 控制器過于靈活,缺少一個公用控制器。
【Spring常見面試問題】相關(guān)文章:
常見的面試問題05-17
面試常見問題及回答06-20
采購面試常見問題06-10
面試英語常見問題06-14
英文面試常見問題03-19
MBA面試常見問題04-26
面試常見問題及回答03-14
面試常見問題及答案匯總05-12
酒店面試常見問題10-17
社工常見面試問題03-09