更新時(shí)間:2022-12-20 15:09:42 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽1203次
小編收集了一些在大家在面試時(shí)被經(jīng)常問(wèn)及的關(guān)于Spring的主要問(wèn)題,這些問(wèn)題有可能在你下次面試時(shí)就會(huì)被問(wèn)到。希望可以幫助到大家:
1、BeanFactory常用的實(shí)現(xiàn)類(lèi)有哪些?
Bean工廠(chǎng)是工廠(chǎng)模式的一個(gè)實(shí)現(xiàn),提供了控制反轉(zhuǎn)功能,用來(lái)把應(yīng)用的配置和依賴(lài)從正真的應(yīng)用代碼中分離。常用的BeanFactory實(shí)現(xiàn)有DefaultListableBeanFactory、XmlBeanFactory、ApplicationContext等。XMLBeanFactory,最常用的就是org.springframework.beans.factory.xml.XmlBeanFactory,它根據(jù)XML文件中的定義加載beans。該容器從XML文件讀取配置元數(shù)據(jù)并用它去創(chuàng)建一個(gè)完全配置的系統(tǒng)或應(yīng)用。
2、解釋SpringJDBC、SpringDAO和SpringORM?
Spring-DAO并非Spring的一個(gè)模塊,它實(shí)際上是指示你寫(xiě)DAO操作、寫(xiě)好DAO操作的一些規(guī)范。因此,對(duì)于訪(fǎng)問(wèn)你的數(shù)據(jù)它既沒(méi)有提供接口也沒(méi)有提供實(shí)現(xiàn)更沒(méi)有提供模板。在寫(xiě)一個(gè)DAO的時(shí)候,你應(yīng)該使用@Repository對(duì)其進(jìn)行注解,這樣底層技術(shù)(JDBC,Hibernate,JPA,等等)的相關(guān)異常才能一致性地翻譯為相應(yīng)的DataAccessException子類(lèi)。
Spring-JDBC提供了Jdbc模板類(lèi),它移除了連接代碼以幫你專(zhuān)注于SQL查詢(xún)和相關(guān)參數(shù)。Spring-JDBC還提供了一個(gè)JdbcDaoSupport,這樣你可以對(duì)你的DAO進(jìn)行擴(kuò)展開(kāi)發(fā)。它主要定義了兩個(gè)屬性:一個(gè)DataSource和一個(gè)JdbcTemplate,它們都可以用來(lái)實(shí)現(xiàn)DAO方法。JdbcDaoSupport還提供了一個(gè)將SQL異常轉(zhuǎn)換為SpringDataAccessExceptions的異常翻譯器。
Spring-ORM是一個(gè)囊括了很多持久層技術(shù)(JPA,JDO,Hibernate,iBatis)的總括模塊。對(duì)于這些技術(shù)中的每一個(gè),Spring都提供了集成類(lèi),這樣每一種技術(shù)都能夠在遵循Spring的配置原則下進(jìn)行使用,并平穩(wěn)地和Spring事務(wù)管理進(jìn)行集成。
對(duì)于每一種技術(shù),配置主要在于將一個(gè)DataSourcebean注入到某種SessionFactory或者EntityManagerFactory等bean中。純JDBC不需要這樣的一個(gè)集成類(lèi)(JdbcTemplate除外),因?yàn)镴DBC僅依賴(lài)于一個(gè)DataSource。
如果你計(jì)劃使用一種ORM技術(shù),比如JPA或者Hibernate,那么你就不需要Spring-JDBC模塊了,你需要的是這個(gè)Spring-ORM模塊。
3、簡(jiǎn)單介紹一下SpringWEB模塊?
Spring的WEB模塊是構(gòu)建在applicationcontext模塊基礎(chǔ)之上,提供一個(gè)適合web應(yīng)用的上下文。這個(gè)模塊也包括支持多種面向web的任務(wù),如透明地處理多個(gè)文件上傳請(qǐng)求和程序級(jí)請(qǐng)求參數(shù)的綁定到你的業(yè)務(wù)對(duì)象。它也有對(duì)JakartaStruts的支持。
4、Spring配置文件有什么作用?
Spring配置文件是個(gè)XML文件,這個(gè)文件包含了類(lèi)信息,描述了如何配置它們,以及如何相互調(diào)用。
5、什么是SpringIOC容器?
IOC控制反轉(zhuǎn):SpringIOC負(fù)責(zé)創(chuàng)建對(duì)象,管理對(duì)象。通過(guò)依賴(lài)注入(DI),裝配對(duì)象,配置對(duì)象,并且管理這些對(duì)象的整個(gè)生命周期。
6、IOC的優(yōu)點(diǎn)是什么?
IOC或依賴(lài)注入把應(yīng)用的代碼量降到最低。它使應(yīng)用容易測(cè)試,單元測(cè)試不再需要單例和JNDI查找機(jī)制。最小的代價(jià)和最小的侵入性使松散耦合得以實(shí)現(xiàn)。IOC容器支持加載服務(wù)時(shí)的餓漢式初始化和懶加載。
7、ApplicationContext的實(shí)現(xiàn)類(lèi)有哪些?
FileSystemXmlApplicationContext:此容器從一個(gè)XML文件中加載beans的定義,XMLBean配置文件的全路徑名必須提供給它的構(gòu)造函數(shù)。
ClassPathXmlApplicationContext:此容器也從一個(gè)XML文件中加載beans的定義,這里,你需要正確設(shè)置classpath因?yàn)檫@個(gè)容器將在classpath里找bean配置。
WebXmlApplicationContext:此容器加載一個(gè)XML文件,此文件定義了一個(gè)WEB應(yīng)用的所有bean。
8、BeanFactory與AppliacationContext有什么區(qū)別?
● BeanFactory
基礎(chǔ)類(lèi)型的IOC容器,提供完成的IOC服務(wù)支持。如果沒(méi)有特殊指定,默認(rèn)采用延遲初始化策略。相對(duì)來(lái)說(shuō),容器啟動(dòng)初期速度較快,所需資源有限。
● ApplicationContext
ApplicationContext是在BeanFactory的基礎(chǔ)上構(gòu)建,是相對(duì)比較高級(jí)的容器實(shí)現(xiàn),除了BeanFactory的所有支持外,ApplicationContext還提供了事件發(fā)布、國(guó)際化支持等功能。ApplicationContext管理的對(duì)象,在容器啟動(dòng)后默認(rèn)全部初始化并且綁定完成。
9、什么是Spring的依賴(lài)注入?
平常的java開(kāi)發(fā)中,程序員在某個(gè)類(lèi)中需要依賴(lài)其它類(lèi)的方法,則通常是new一個(gè)依賴(lài)類(lèi)再調(diào)用類(lèi)實(shí)例的方法,這種開(kāi)發(fā)存在的問(wèn)題是new的類(lèi)實(shí)例不好統(tǒng)一管理,spring提出了依賴(lài)注入的思想,即依賴(lài)類(lèi)不由程序員實(shí)例化,而是通過(guò)spring容器幫我們new指定實(shí)例并且將實(shí)例注入到需要該對(duì)象的類(lèi)中。依賴(lài)注入的另一種說(shuō)法是“控制反轉(zhuǎn)”,通俗的理解是:平常我們new一個(gè)實(shí)例,這個(gè)實(shí)例的控制權(quán)是我們程序員,而控制反轉(zhuǎn)是指new實(shí)例工作不由我們程序員來(lái)做而是交給spring容器來(lái)做。
10、有哪些不同類(lèi)型的IOC(依賴(lài)注入)方式?
Spring提供了多種依賴(lài)注入的方式。
● set注入
● 構(gòu)造器注入
● 靜態(tài)工廠(chǎng)的方法注入
● 實(shí)例工廠(chǎng)的方法注入
以上就是“面試官會(huì)問(wèn)到的spring常見(jiàn)面試題”,你能回答上來(lái)嗎?如果想要了解更多的Java面試題相關(guān)內(nèi)容,可以關(guān)注動(dòng)力節(jié)點(diǎn)Java官網(wǎng)。
相關(guān)閱讀
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話(huà)與您溝通安排學(xué)習(xí)