Spring框架面試題是每一個(gè)想要成為合格的Java程序員或者工程師需要熟悉的,面試者在面試之前到底需要準(zhǔn)備哪些東西呢?今天這些內(nèi)容也可作為個(gè)人簡歷內(nèi)容,同時(shí)也是日后面對面試官時(shí)有可能設(shè)計(jì)到的問題:

1.你對Spring框架的理解(特點(diǎn))? Spring框架有哪些模塊 ?
- Spring,一種用來簡化企業(yè)應(yīng)用級(jí)開發(fā)的一種開源框架。
- 簡化開發(fā):它對常用的API做了封裝,比如對JDBC的封裝,使用Spring JDBC訪問數(shù)據(jù)庫,就不需要考慮如何獲取連接和關(guān)閉的問題。
- 解:Spring幫我們管理軟件之間的依賴關(guān)系,這樣對象之間的合性就降低了。這樣的維護(hù)性就得到了提高。.集成其它框架:方便擴(kuò)展和優(yōu)化其功能,例如和Mybatis的集成等。0
- Spring框架是按照設(shè)計(jì)模式精心打造的,這使得我們在開發(fā)環(huán)境中,能方便的使用框架,不用考慮后臺(tái)是怎么進(jìn)行的。
- Spring容器是Spring框架中一個(gè)核心的模塊,用來管理對象的創(chuàng)建,銷毀和初始化托操作,以及對象之間的依賴關(guān)系等。
- 目前Spring框架已經(jīng)集合成20多個(gè)模塊:

2.Spring的優(yōu)點(diǎn)?
- 簡化開發(fā),解耦,集成其它框架。
- 低侵入式設(shè)計(jì),代碼污染級(jí)別級(jí)別。
- Spring的DI機(jī)制降低了業(yè)務(wù)對象替換的復(fù)雜性,提高了軟件之間的解耦。
- Spring AOP支持將一些通用的任務(wù)進(jìn)行集中式的管理,例如:安全,事務(wù),日志等,從而使代碼能更好的復(fù)用。
3.什么是控制反轉(zhuǎn) (IOC) ,什么是依賴注入 (DI) ?
0C:就是對象之間的依賴關(guān)系由容器來創(chuàng)建,對象之間的關(guān)系本來是由我們開發(fā)者自己創(chuàng)建和維護(hù)的,在我們使用Spring框架后,對象之間的關(guān)系由容器來創(chuàng)建和維護(hù),將開發(fā)者做的事讓容器做,這就是控制反轉(zhuǎn)。BeanFactory接口是Spring loc容器的核心接口。。Dl: 我們在使用Spring容器的時(shí)候,容器通過調(diào)用set方法或者是構(gòu)造器來建立對象之間的依賴關(guān)系。。控制反轉(zhuǎn)是目標(biāo),依賴注入是我們實(shí)現(xiàn)控制反轉(zhuǎn)的一種手段
4.Java中實(shí)現(xiàn)依賴注入的三種方式?
5.Spring容器中如何創(chuàng)建對象?
無參構(gòu)造創(chuàng)建靜態(tài)工廠創(chuàng)建實(shí)例工廠創(chuàng)建
6.Spring有幾種配置方式?
- 基于XML文件的配置 這種配置文件的格式常用開頭,然后運(yùn)用一系列的bean定義和專門的應(yīng)用配置選項(xiàng)組成。Spring XML配置方式是使用被Spring命名空間所支持的一些列XML的標(biāo)簽來實(shí)現(xiàn)的
- 基于注解的配置 可以使用注解的方式來代替XML方式的bean元素的配置。這就是組件掃描,常用依賴注入的一些注解有:@Controller @Service @Autowired @RequestMapping @RequestParam @ModelAttribute @Cacheable @CacheFlush@Resource @PostConstruct @PreDestroy @Repository @Scope @SessionAttributes @lnitBinder @Required @Qualifier組件掃描: 容器會(huì)掃描base-package指定的包及其子包下面的所有類,如果該類有一些特定的注解,則納入容器進(jìn)行管理。
- 在類前面添加的一些特定的注解: @Component 通用注解 @Repository 持久層注解 @Service 業(yè)務(wù)層注解、@Controller 控制層注解
- 基于Java的配置
7.Spring Bean的生命周期 ?
- 指Spring中bean元素被實(shí)例化,和被銷毀的過程。我們通過init-method屬性指定初始化方法:通過destroy-method方法指定銷毀方法。
- 注意:只有作用域?yàn)镾inaleton的時(shí)候才會(huì)有效。
8.解釋什么叫延遲加載?
- 默認(rèn)情況下,容器啟動(dòng)之后會(huì)將所有作用域?yàn)閱卫腷ean創(chuàng)建好:但是有的業(yè)務(wù)場景我們并不需要它提前都創(chuàng)建好。此時(shí),我們可以在bean中設(shè)置izay-init=“true”,這樣,當(dāng)容器啟動(dòng)之后,作用域?yàn)閱卫腷ean.就不在創(chuàng)建。
9.解釋什么是自動(dòng)裝配?
- 就是將一個(gè)Bean注入到其它的Bean的Property中,默認(rèn)情況下,容器不會(huì)自動(dòng)裝配,需要我們手動(dòng)設(shè)定。Spring 可以通過向BeanFactory中注入的方式來搞定bean之間的依賴關(guān)系,達(dá)到自動(dòng)裝配的目的。
- 自動(dòng)裝配建議少用,如果要使用,建議使用ByName
10.Spring bean元素的作用域?
- 當(dāng)通過Spring容器創(chuàng)建一個(gè)Bean實(shí)例的時(shí)候,不僅可以完成bean實(shí)例的實(shí)力化,還可以為bean指定作用域。Spring bean元素的支持以下5種作用域:
- Singleton; 單例模式,在整個(gè)spring lOC容器中,使用singleton定義的bean將只有一個(gè)實(shí)例。
- Prototype: 多例模式,每次通過容器中的getBean方法獲取prototype定義的beans時(shí),都會(huì)產(chǎn)生一個(gè)新的bean的實(shí)例。
- Request: 對于每次Http請求,使用request定義的bean都會(huì)產(chǎn)生一個(gè)新的實(shí)例,只有在web應(yīng)用時(shí)候,該作用域才會(huì)有效。
- Session: 對于每次Http Session,使用session定義的Bean都將產(chǎn)生一個(gè)新的實(shí)例。
- Globalsession:每個(gè)全局的Http Sesisonn,使用session定義的本都將產(chǎn)生一個(gè)新的實(shí)例。
以上就是“2023年Spring框架面試題總結(jié)”,你能回答上來嗎?如果想要了解更多的Java面試題相關(guān)內(nèi)容,可以關(guān)注動(dòng)力節(jié)點(diǎn)Java官網(wǎng)。