- 相關(guān)推薦
Spring面試題庫
1. 你一般用spring做什么?
控制反轉(zhuǎn)IOC AOP
2. spring中的哪個類的哪個方法可用于獲取bean
3. spring是什么?根據(jù)你的理解詳細(xì)談?wù)勀愕囊娊狻?/strong>
目的:解決企業(yè)應(yīng)用開發(fā)的復(fù)雜性
功能:使用基本的JavaBean代替EJB,并提供了更多的企業(yè)應(yīng)用功能
范圍:任何Java應(yīng)用
簡單來說,Spring是一個輕量級的控制反轉(zhuǎn)(IoC)和面向切面(AOP)的容器框架。
輕量——從大小與開銷兩方面而言Spring都是輕量的。完整的Spring框架可以在一個大小只有1MB多的JAR文件里發(fā)布。并且Spring所需的處理開銷也是微不足道的。此外,Spring是非侵入式的:典型地,Spring應(yīng)用中的對象不依賴于Spring的特定類。
控制反轉(zhuǎn)——Spring通過一種稱作控制反轉(zhuǎn)(IoC)的技術(shù)促進(jìn)了松耦合。當(dāng)應(yīng)用了IoC,一個對象依賴的其它對象會通過被動的方式傳遞進(jìn)來,而不是這個對象自己創(chuàng)建或者查找依賴對象。你可以認(rèn)為IoC與JNDI相反——不是對象從容器中查找依賴,而是容器在對象初始化時不等對象請求就主動將依賴傳遞給它。
面向切面——Spring提供了面向切面編程的豐富支持,允許通過分離應(yīng)用的業(yè)務(wù)邏輯與系統(tǒng)級服務(wù)(例如審計(auditing)和事務(wù)()管理)進(jìn)行內(nèi)聚性的開發(fā)。應(yīng)用對象只實現(xiàn)它們應(yīng)該做的——完成業(yè)務(wù)邏輯——僅此而已。它們并不負(fù)責(zé)(甚至是意識)其它的系統(tǒng)級關(guān)注點,例如日志或事務(wù)支持。
容器——Spring包含并管理應(yīng)用對象的配置和生命周期,在這個意義上它是一種容器,你可以配置你的每個bean如何被創(chuàng)建——基于一個可配置原型(prototype),你的bean可以創(chuàng)建一個單獨的實例或者每次需要時都生成一個新的實例——以及它們是如何相互關(guān)聯(lián)的。然而,Spring不應(yīng)該被混同于傳統(tǒng)的重量級的EJB容器,它們經(jīng)常是龐大與笨重的,難以使用。
框架——Spring可以將簡單的組件配置、組合成為復(fù)雜的應(yīng)用。在Spring中,應(yīng)用對象被聲明式地組合,典型地是在一個XML文件里。Spring也提供了很多基礎(chǔ)功能(事務(wù)管理、持久化框架集成等等),將應(yīng)用邏輯的開發(fā)留給了你。
所有Spring的這些特征使你能夠編寫更干凈、更可管理、并且更易于測試的代碼。它們也為Spring中的各種模塊提供了基礎(chǔ)支持。
4. 項目中如何體現(xiàn)Spring中的切面編程,距離說明。
面向切面編程:主要是橫切一個關(guān)注點,將一個關(guān)注點模塊化成一個切面。在切面上聲明一個通知(Advice)和切入點(Pointcut); 通知: 是指在切面的某個特定的連接點(代表一個方法的執(zhí)行。通過聲明一個org.aspectj.lang.JoinPoint類型的參數(shù)可以使通知(Advice)的主體部分獲得連接點信息。)上執(zhí)行的動作。通知中定義了要插入的方法。切入點:切入點的內(nèi)容是一個表達(dá)式,以描述需要在哪些對象的哪些方法上插入通知中定義的方法。
項目中用到的Spring中的切面編程最多的地方:聲明式事務(wù)管理。
a、定義一個事務(wù)管理器
b、配置事務(wù)特性(相當(dāng)于聲明通知。一般在業(yè)務(wù)層的類的一些方法上定義事務(wù))
c、配置哪些類的哪些方法需要配置事務(wù)(相當(dāng)于切入點。一般是業(yè)務(wù)類的方法上)
5. spring中可以用注入獲得屬性值,還有其他的方式嗎?
讀取配置文件
6. spring在項目中如何充當(dāng)粘合劑
1、在項目中利用spring的IOC(控制反轉(zhuǎn)或依賴注入),明確地定義組件接口(如UserDAO),開發(fā)者可以獨立開發(fā)各個組件, 然后根據(jù)組件間的依賴關(guān)系組裝(UserAction依賴于UserBiz,UserBiz依賴于UserDAO)運行,很好的把Struts(Action)和hibernate(DAO的實現(xiàn))結(jié)合起來了。
2、spring的事務(wù)管理把hibernate對數(shù)據(jù)庫的操作進(jìn)行了事務(wù)配置。