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