Spring面試題彙總

quanweiya發表於2020-10-12

1.關於spring面試高頻面試技術點!

  1. spring的元件springFarmwork即是spring它提供了springmvc,
  2. springIOC容器化技術實現控制反轉,
  3. SpringAOP實現面向切面程式設計
  4. Springtransactional實現對事物的管理

2.談一下自己對spring的理解!

框架的作用是為我們簡化開發,spring是一款輕量型框架,將程式碼解耦合開發,spring對Java分層管理,提升了程式碼的可閱讀性,spring還對多種框架進行整合,完成對應的一站式服務,
spring提供控制反轉功能:即springIOC就是將物件的建立權交給spring管理,我們無需對建立物件,這樣可以提升對應效率,節約了建立物件的時間。spring為我們提供了工廠模式,使用beanfactory工廠建立物件,一般我們使用對應的繼承介面,applicationContext完成對應的配置檔案的讀取。
springAOP:是指面向切面程式設計,面向切面,是spring提供的對事物的服務,而spring提供了兩種事務,一種是響應式事務,另外一種是程式設計式事務,springAOP將響應式事務直接整合到對應的應用程式中。
springtransactional是spring提供的事務:它有兩種,一種是響應式事務,另外一種是程式設計式事務,使用AOP與事務結合,完成對應的事務的管理。

3.簡單介紹一下Spring的模組!

spring提供的模組有對應的data層的資料持久化的支援,有對應的ORM,物件關係對映,對應的JDBC完成對應的持久化資料庫的支援,比如說Mysql,比如說,Oracle完成對應的資料的持久化的支援。還有對事務的管理,transactions支援對應的持久化層的資料,對wab層的資料支援的模組有web,websocket,servlet完成對應的web層資料的管理,對應的還有aspect完成對應的切面的管理,AOP面向切面完成對應的的管理,spring提供的核心有對應的Cores,Bean,context上下文物件,spel是對應IOC容器化的支援。

  1. JDBC完成對應的持久化資料的支援,比如說,mysql,oracle資料庫,完成對資料庫的封裝
  2. ORM是指對應的物件關係對映,完成對應的框架的使用比如說hibernate使用,以及半自動框架mybatis框架的使用。
  3. transactions完成對應的事務的支援,使用註解或者xml,包括程式設計式事務,或者響應式事務。
    web層的管理:
  4. web是對應的mvc對應的封裝,完成對應的controller的管理。
  5. websocker一般是對應的聊天資訊的支援。
  6. servlet是對應的web層,資料的請求與資料的接收,使用對應request,response
    Spring的核心容器:
  7. core是spring的核心程式碼
  8. bean是spring的對應的是工廠模式的具體實現,beanfactory的實現,與對應的IOC共同完成。
  9. springcontext完成對應的上下文的建立。
  10. spel是對應的IOC的模式是一樣的 。
    AOP:是面向切面程式設計是一種程式設計思想,他的作用是對事務更好的支援,對對應的宣告式事務更好的支援。

4. 請簡述一下使用spring的好處!

  1. spring是現在的主流框架,他對其他持久層框架有很好的支援,比如說ORM框架,日誌框架都有很好的支援。
  2. 支援對應的DI注入,完成對應的引數傳遞。
  3. spring是一種輕量型框架,使用起來比較方便
  4. spring有很好的對事務進行支援
  5. 提供了比較好的異常處理機制
  6. 提供了對web的支援springmvc
  7. 使用面向切面思想,將程式碼分離。

5.spring中都用到了哪些設計模式!

  1. 單例設計模式:分為懶漢式設計模式,餓漢式設計模式,
  2. 代理模式:有對應的靜態代理模式動態代理模式,對應的動態代理模式有對應的基於jdk的動態代理模式,基於cglib的動態代理模式,基於jdk的動態代理模式是基於介面實現的,基於cgilb的動態代理模式是對應的cglib的。
  3. 模板設計:對應的有redistmplate,jdbctemplate對模板的設計
  4. 工廠模式:使用beanfactory,建立對應的beanfactory工廠。
  5. 前端控制器:dispathservlet來完成對應的請求的分發。
  6. 提供DI依賴注入,完成對應的資料的applicationcontest的介面實現。

6.請簡述對應的springIOC!

springIOC是spring的控制反轉功能,spring的IOC容器,通過Bean工廠,完成對對應的例項化。通過依賴注入Di完成對應的例項化。可以通過對應的XML完成對應的配置的讀取,通過配置類,完成對應的配置類的注入。
依賴注入是DI完成的是對對應的功能的實現。springIOC是一種控制反轉的思想,將對應的物件的建立權交給spring去建立,利用spring的bean工廠模式,建立對應的配置類,完成控制反轉的功能實現,

7.可以通過多少種方式完成依賴注入

三種:

  1. 通過介面注入,介面注入一般我們不適用
  2. 通過建構函式注入
  3. 通過對應的setter方法注入

需要注意的是構造方法不會對應的引數覆蓋,setter會對對應的set方法覆蓋。

8.請簡述spring IOC的容器!

springIOC容器有兩類:

  1. beanfactory :通過備案工廠,完成對應的資料的例項化
  2. applicationcontext:他是對應的beanfactory的介面的實現,它提供了對應的擴充的方法,完成對應的功能的封裝
    他們的區別在於:applicationContext可以配置容器的例項化方式,指定物件的建立週期,完成應的兌現的實時載入,提高效率。
  3. application的例項化方式:
    1. classpathXMLapplication:類載入物件,完成對配置類資訊讀取。
    2. fileSystemXMLapplication:完成對應的檔案的上下文讀取。
    3. webXMLapplication完成對應的資訊的讀取。
      springboot支援的是configactionwebXMLapplication

9.列舉對應的IOC的優勢:

  1. 程式的最小化程式碼,提升程式碼的開發效率。
  2. 可以控制物件的載入策略,是實時載入還是延遲載入。
  3. 易於測試,程式碼的測試。
  4. 將程式碼解耦合:

10. spring中有哪些不同型別的事件。

application提供了對應事件的監聽功能。
五種對應的事件通知:

  1. 上下文開始事件通知:該通知是呼叫application時呼叫的通知,或者是configactionWebXmlApplication時呼叫的通知呼叫start方法時。
  2. 上下文更新事件通知:呼叫application或者configactionWebXmLapplication時更新。
  3. 上下文停止事件通知:容器關閉 或者停止時觸發該事件。
  4. 上下文關閉事件通知:當application管理的bean被觸發時,關閉的觸發事件,所有的bean都將被銷燬。
  5. 請求處理事件通知:當一個http請求結束時,一個請求處理事件被觸發。

11. spring Bean的配置方式

springbean的配置方式有三種,

  1. 基於xml配置:在xml檔案中進行配置
  2. 基於spring註解:需要先開啟註解
  3. 基於Java配置類:使用註解@configaction宣告配置類,完成對應的配置資訊。使用@Bean宣告對應的配置資訊。

12.springBean的生命週期!

  1. 例項化bean物件,完成對應的物件的初始化。
  2. 使用構造方法賦值到對應的bean的物件中。
  3. 進一步初始化物件,完成對應的方法呼叫
  4. 伺服器關閉銷燬對應的bean物件。

13.什麼是spring裝配!

簡單的來說就是spring與bean混合使用,spring的IOC與對應的bean繫結在一起,以及容器如何使用依賴注入,,將對應的bean繫結在一起。實際上DI和spring裝配是指一個東西。

14.說一下什麼是延遲載入!

一般單例模式spring容器啟動,會將對應的物件先建立完成,延遲載入使用對應的lazy-init完成對應的,懶載入,使啟動專案時不建立對應的對應的物件,使用時再創鍵,這就是延遲載入。

15.什麼基於註解的配置!

與對應的XML配置不同,基於註解是在對應的JAva類中,新增對應的@configaction宣告註解的配置類,使用@Bean扮演對應的的標籤。
常用的註解有
@Service在對應的service中使用
@Controller在對應的web曾使用宣告
@Respository在持久層使用,宣告為持久類
@Component交給spring管理的常用的註解
@Autowired引入對應的與對應的Bean,其作用就是自動裝配,預設的型別驅動注入。
@Qualifiler相同的型別的bean使用這個註解消除對應的歧視。

16. 簡單說一下對AOP的理解!

spring協助對應的事務,完成對應的和功能實現,AOP是指面向切面程式設計,aspect是由切點和通知組成,減少業務程式碼中,混入對應的系統程式碼,比如說,事務 ,日誌資訊,許可權管理。
aop的實現原理是基於jdk的動態代理,反射共同實現完成。將對應的系統程式碼抽離出來,使用的動態代理。
在切點中,織入對應的代理功能,比如說對應的事務,許可權管理,日誌管理。
一個方法的執行或者一個異常的處理。
advice和pointcut
在類中我們可以認為所有的節點是一個jointcut,但是我們不是所有的事務都新增對應的織入advice而pointcut就是提供對應的,給滿足條件的pointcut新增對應的advice。

17.什麼是advice

advice是對應的織入,通知的意思。
有哪些型別:
@Before:這個是在對應的註解之前執行,並且使用對應的
@After returning這個是在對應的方法執行後執行,並且返回對應的資訊。
@@After Throwing 這個是在對應的節點之後執行對應的
@After finally 不管是否遇到一異常都會去執行
@Around在連線點之前之後執行

18.AOP有哪些實現。

靜態代理:
動態代理:

  1. 基於JDK的動態代理,基於cglib的動態代理
  2. jdk動態代理,是基於介面實現的,cglib的動態代理是基於方法實現的。

19.列舉spring支援的事務型別!

宣告式事務:從而事務管理與業務程式碼分離
程式設計式事務:使用程式設計式事務程式碼的呼叫回滾,非常簡單,但是封裝起來相對麻煩。

相關文章