Java進階架構之開源框架面試題系列:Spring+SpringMVC+MyBatis

開源框架
Spring5 Framework體系結構
spring5概述
Spring5環境搭建
Spring MVC
AOP原始碼解析
IOC原始碼解析
Mybatis

spring

什麼是Spring框架?Spring框架有哪些主要模組?
使用Spring框架能帶來哪些好處?
什麼是控制反轉(IOC)?什麼是依賴注入?
請解釋下Spring框架中的IOC?
BeanFactory和ApplicationContext有什麼區別?
Spring有幾種配置方式?
如何用基於XML配置的方式配置Spring?

怎樣用註解的方式配置Spring?
請解釋Spring Bean的生命週期?
Spring Bean的作用域之間有什麼區別?
什麼是Spring inner beans?
Spring框架中的單例Beans是執行緒安全的麼?
請舉例說明如何在Spring中注入一個Java Collection?
如何向Spring Bean中注入一個Java.util.Properties?
請解釋Spring Bean的自動裝配?
如何開啟基於註解的自動裝配?

請解釋自動裝配模式的區別?
請舉例解釋@Required註解?
請舉例解釋@Autowired註解?
請舉例說明@Qualifier註解?
構造方法注入和設值注入有什麼區別?
Spring框架中有哪些不同型別的事件?
FileSystemResource和ClassPathResource有何區別?
Spring 框架中都用到了哪些設計模式?
SpringMVC

什麼是SpringMvc?
Spring MVC的優點
SpringMVC工作原理?
SpringMVC流程?
SpringMvc的控制器是不是單例模式,如果是,有什麼問題,怎麼解決?
如果你也用過struts2.簡單介紹下springMVC和struts2的區別有哪些?
SpingMvc中的控制器的註解一般用那個,有沒有別的註解可以替代?
@RequestMapping註解用在類上面有什麼作用?
怎麼樣把某個請求對映到特定的方法上面?
如果在攔截請求中,我想攔截get方式提交的方法,怎麼配置?
怎麼樣在方法裡面得到Request,或者Session?
我想在攔截的方法裡面得到從前臺傳入的引數,怎麼得到?
如果前臺有很多個引數傳入,並且這些引數都是一個物件的,那麼怎麼樣快速得到這個物件?
SpringMvc中函式的返回值是什麼?
SpringMVC怎麼樣設定重定向和轉發的?
SpringMvc用什麼物件從後臺向前臺傳遞資料的?
SpringMvc中有個類把檢視和資料都合併的一起的,叫什麼?
怎麼樣把ModelMap裡面的資料放入Session裡面?
SpringMvc怎麼和AJAX相互呼叫的?
當一個方法向AJAX返回特殊物件,譬如Object,List等,需要做什麼處理?
SpringMvc裡面攔截器是怎麼寫的
講下SpringMvc的執行流程
MyBatis

#{}和${}的區別是什麼?
通常一個Xml對映檔案,都會寫一個Dao介面與之對應,請問,這個Dao介面的工作原理是什麼?Dao接口裡的方法,引數不同時,方法能過載嗎?
Mybatis是如何進行分頁的?分頁外掛的原理是什麼?
Mybatis是如何將sql執行結果封裝為目標物件並返回的?都有哪些對映形式?
Xml對映檔案中,除了常見的select|insert|update|delete標籤之外,還有哪些標籤?
簡述Mybatis的外掛執行原理,以及如何編寫一個外掛
一級、二級快取
Mybatis是否支援延遲載入?如果支援,它的實現原理是什麼?
Mybatis對映檔案中,如果A標籤通過include引用了B標籤的內容,請問,B標籤能否定義在A標籤的後面,還是說必須定義在A標籤的前面?
簡述Mybatis的Xml對映檔案和Mybatis內部資料結構之間的對映關係?
面試題及答案的獲取方式 ,歡迎加入Java進階架構交流:805685193。提供Java架構進階思維導圖,主要分享分散式架構、高可擴充套件、高效能、高併發、效能優化、Spring MVC、Redis、MyBatis、Nginx、Jvm大型分散式專案實戰學習架構師視訊。
答案解析
什麼是Spring框架?Spring框架有哪些主要模組?
Spring框架是一個為Java應用程式的開發提供了綜合、廣泛的基礎性支援的Java平臺。
Spring幫助開發者解決了開發中基礎性的問題,使得開發人員可以專注於應用程式的開發。
Spring框架本身亦是按照設計模式精心打造,這使得我們可以在開發環境中安心的整合Spring框架,不必擔心Spring是如何在後臺進行工作的。
Spring框架至今已集成了20多個模組。這些模組主要被分如下圖所示的核心容器、資料訪問/整合,、Web、AOP(面向切面程式設計)、工具、訊息和測試模組。
SpringMVC工作原理?
客戶端傳送請求到DispatcherServlet
DispatcherServlet查詢handlerMapping找到處理請求的Controller
Controller呼叫業務邏輯後,返回ModelAndView
DispatcherServlet查詢ModelAndView,找到指定檢視
檢視將結果返回到客戶端
MyBatis的好處是什麼?
MyBatis把sql語句從Java源程式中獨立出來,放在單獨的XML檔案中編寫,給程式的維護帶來了很大便利。
MyBatis封裝了底層JDBC API的呼叫細節,並能自動將結果集轉換成Java Bean物件,大大簡化了Java資料庫程式設計的重複工作。
因為MyBatis需要程式設計師自己去編寫sql語句,程式設計師可以結合資料庫自身的特點靈活控制sql語句,因此能夠實現比Hibernate等全自動orm框架更高的查詢效率,能夠完成複雜查詢。
面試題及答案的獲取方式 ,歡迎加入Java進階架構交流:805685193。提供Java架構進階思維導圖,主要分享分散式架構、高可擴充套件、高效能、高併發、效能優化、Spring MVC、Redis、MyBatis、Nginx、Jvm大型分散式專案實戰學習架構師視訊。