- 相關(guān)推薦
Spring的專業(yè)面試試題
1. 什么是bean裝配?
裝配,或bean 裝配是指在Spring 容器中把bean組裝到一起,前提是容器需要知道bean的依賴關(guān)系,如何通過(guò)依賴注入來(lái)把它們裝配到一起。
2. 什么是bean的自動(dòng)裝配?
Spring 容器能夠自動(dòng)裝配相互合作的bean,這意味著容器不需要和配置,能通過(guò)Bean工廠自動(dòng)處理bean之間的協(xié)作。
3. 解釋不同方式的自動(dòng)裝配 。
有五種自動(dòng)裝配的方式,可以用來(lái)指導(dǎo)Spring容器用自動(dòng)裝配方式來(lái)進(jìn)行依賴注入。
no:默認(rèn)的方式是不進(jìn)行自動(dòng)裝配,通過(guò)顯式設(shè)置ref 屬性來(lái)進(jìn)行裝配。
byName:通過(guò)參數(shù)名 自動(dòng)裝配,Spring容器在配置文件中發(fā)現(xiàn)bean的autowire屬性被設(shè)置成byname,之后容器試圖匹配、裝配和該bean的屬性具有相同名字的bean。
byType::通過(guò)參數(shù)類型自動(dòng)裝配,Spring容器在配置文件中發(fā)現(xiàn)bean的autowire屬性被設(shè)置成byType,之后容器試圖匹配、裝配和該bean的屬性具有相同類型的bean。如果有多個(gè)bean符合條件,則拋出錯(cuò)誤。
constructor:這個(gè)方式類似于byType, 但是要提供給構(gòu)造器參數(shù),如果沒(méi)有確定的帶參數(shù)的構(gòu)造器參數(shù)類型,將會(huì)拋出異常。
autodetect:首先嘗試使用constructor來(lái)自動(dòng)裝配,如果無(wú)法工作,則使用byType方式。
4.自動(dòng)裝配有哪些局限性 ?
自動(dòng)裝配的局限性是:
重寫: 你仍需用 和 配置來(lái)定義依賴,意味著總要重寫自動(dòng)裝配。
基本數(shù)據(jù)類型:你不能自動(dòng)裝配簡(jiǎn)單的屬性,如基本數(shù)據(jù)類型,String字符串,和類。
模糊特性:自動(dòng)裝配不如顯式裝配精確,如果有可能,建議使用顯式裝配。
5. 你可以在Spring中注入一個(gè)null 和一個(gè)空字符串嗎?
可以。
Spring注解
6. 什么是基于Java的Spring注解配置? 給一些注解的例子.
基于Java的配置,允許你在少量的Java注解的幫助下,進(jìn)行你的大部分Spring配置而非通過(guò)XML文件。
以@Configuration 注解為例,它用來(lái)標(biāo)記類可以當(dāng)做一個(gè)bean的定義,被Spring IOC容器使用。另一個(gè)例子是@Bean注解,它表示此方法將要返回一個(gè)對(duì)象,作為一個(gè)bean注冊(cè)進(jìn)Spring應(yīng)用上下文。
7. 什么是基于注解的容器配置?
相對(duì)于XML文件,注解型的配置依賴于通過(guò)字節(jié)碼元數(shù)據(jù)裝配組件,而非尖括號(hào)的聲明。
開(kāi)發(fā)者通過(guò)在相應(yīng)的類,方法或?qū)傩陨鲜褂米⒔獾姆绞剑苯咏M件類中進(jìn)行配置,而不是使用xml表述bean的裝配關(guān)系。
8. 怎樣開(kāi)啟注解裝配?
注解裝配在默認(rèn)情況下是不開(kāi)啟的,為了使用注解裝配,我們必須在Spring配置文件中配置 元素。
9. @Required 注解
這個(gè)注解表明bean的屬性必須在配置的時(shí)候設(shè)置,通過(guò)一個(gè)bean定義的顯式的屬性值或通過(guò)自動(dòng)裝配,若@Required注解的bean屬性未被設(shè)置,容器將拋出BeanInitializationException。
10. @Autowired 注解
@Autowired 注解提供了更細(xì)粒度的控制,包括在何處以及如何完成自動(dòng)裝配。它的用法和@Required一樣,修飾setter方法、構(gòu)造器、屬性或者具有任意名稱和/或多個(gè)參數(shù)的PN方法。
11. @Qualifier 注解
當(dāng)有多個(gè)相同類型的bean卻只有一個(gè)需要自動(dòng)裝配時(shí),將@Qualifier 注解和@Autowire 注解結(jié)合使用以消除這種混淆,指定需要裝配的確切的bean。
Spring數(shù)據(jù)訪問(wèn)
12.在Spring框架中如何更有效地使用JDBC?
使用SpringJDBC 框架,資源管理和錯(cuò)誤處理的代價(jià)都會(huì)被減輕。所以開(kāi)發(fā)者只需寫statements 和 queries從數(shù)據(jù)存取數(shù)據(jù),JDBC也可以在Spring框架提供的模板類的幫助下更有效地被使用,這個(gè)模板叫JdbcTemplate (例子見(jiàn)這里here)
13. JdbcTemplate
JdbcTemplate 類提供了很多便利的方法解決諸如把數(shù)據(jù)庫(kù)數(shù)據(jù)轉(zhuǎn)變成基本數(shù)據(jù)類型或?qū)ο螅瑘?zhí)行寫好的或可調(diào)用的數(shù)據(jù)庫(kù)操作語(yǔ)句,提供自定義的數(shù)據(jù)錯(cuò)誤處理。
14. Spring對(duì)DAO的支持
Spring對(duì)數(shù)據(jù)訪問(wèn)對(duì)象(DAO)的支持旨在簡(jiǎn)化它和數(shù)據(jù)訪問(wèn)技術(shù)如JDBC,Hibernate or JDO 結(jié)合使用。這使我們可以方便切換持久層。編碼時(shí)也不用擔(dān)心會(huì)捕獲每種技術(shù)特有的異常。
【Spring的專業(yè)面試試題】相關(guān)文章:
Spring面試試題匯總09-26
Spring面試題庫(kù)09-25
Python專業(yè)面試試題09-26
SOA專業(yè)面試試題02-07
Ruby專業(yè)面試試題08-04
通信工程專業(yè)面試試題09-25
ASP.NET專業(yè)面試試題09-26
有難度的Ruby專業(yè)面試試題08-04