1. 程式人生 > >【java面試】框架篇之Spring

【java面試】框架篇之Spring

1.你如何理解Spring?

具體來說Spring是一個輕量級的容器,用於管理業務相關物件的。核心功能主要為:IOC,AOP,MVC。

IOD:控制反轉,將物件的建立過程交給容器,讓容器管理物件的生命週期如建立,初始化,銷燬等。

AOP:面向切面程式設計,對關注點進行模組化,通過對某一功能點進行程式設計,比如記錄日誌,有很多個類都需要記錄日誌的方法,則建立記錄日誌的代理方法,需要呼叫該功能是隻需要呼叫代理方法,這就是AOP。

MVC:SpringMvc,Spring提供的基於MVC模式設計的Web框架,如今比較流行的框架之一。

2.spring配置bean例項化有哪些方式?

    1)使用類構造器例項化(預設無引數)

<bean id="bean1" class="cn.itcast.spring.b_instance.Bean1"></bean>    2)使用靜態工廠方法例項化(簡單工廠模式) //下面這段配置的含義:呼叫Bean2Factory的getBean2方法得到bean2<bean id="bean2" class="cn.itcast.spring.b_instance.Bean2Factory" factory-method="getBean2"></bean>    3)使用例項工廠方法例項化(工廠方法模式) //先建立工廠例項bean3Facory,再通過工廠例項建立目標bean例項
<bean id="bean3Factory" class="cn.itcast.spring.b_instance.Bean3Factory"></bean><bean id="bean3" factory-bean="bean3Factory" factory-method="getBean3"></bean>

3.介紹一下Spring的事物管理

    事務就是對一系列的資料庫操作(比如插入多條資料)進行統一的提交或回滾操作,如果插入成功,那麼一起成功,如果中間有一條出現異常,那麼回滾之前的所有操作。這樣可以防止出現髒資料,防止資料庫資料出現問題。

開發中為了避免這種情況一般都會進行事務管理。Spring中也有自己的事務管理機制,一般是使用TransactionMananger進行管 理,可以通過Spring的注入來完成此功能。

Spring支援如下兩種方式的事務管理:

程式設計式事務管理:這意味著你可以通過程式設計的方式管理事務,這種方式帶來了很大的靈活性,但很難維護。

宣告式事務管理:這種方式意味著你可以將事務管理和業務程式碼分離。你只需要通過註解或者XML配置管理事務。

一般選擇宣告式事務管理,因為這種方式和應用程式的關聯較少。

4.Bean注入屬性有哪幾種方式?


5.講述SpringMVC工作流程


流程 
1、使用者傳送請求至前端控制器DispatcherServlet 
2
DispatcherServlet收到請求呼叫HandlerMapping處理器對映器。 
3、處理器對映器找到具體的處理器,生成處理器物件及處理器攔截器(如果有則生成)一併返回給DispatcherServlet 
4DispatcherServlet呼叫HandlerAdapter處理器介面卡 
5HandlerAdapter經過適配呼叫具體的處理器(Controller,也叫後端控制器) 
6Controller執行完成返回ModelAndView 
7
HandlerAdaptercontroller執行結果ModelAndView返回給DispatcherServlet 
8
DispatcherServletModelAndView傳給ViewReslover檢視解析器 
9ViewReslover解析後返回具體View 
10
DispatcherServlet根據View進行渲染檢視(即將模型資料填充至檢視中)。 
11DispatcherServlet
響應使用者

6.SpringMVC與Struts2的主要區別?

springmvc的入口是一個servlet即前端控制器,而struts2入口是一個filter過慮器。springmvc基於方法開發,傳遞引數是通過方法形參,可以設計為單例或多例(建議單例)struts2是基於類開發,傳遞引數是通過類的屬性,只能設計為多例。 
Struts採用值棧儲存請求和響應的資料,通過OGNL存取資料, springmvc通過引數解析器是將request物件內容進行解析成方法形參,將響應資料和頁面封裝成ModelAndView物件,最後又將模型資料通過request物件傳輸到頁面。 Jsp檢視解析器預設使用jstl
7.Spring中用到哪些設計模式?1.工廠模式(BeanFactory中)2.單例模式(Spring中預設bean為單例)3.介面卡模式(HandlerAdater)4.裝飾者模式5.代理模式(AOP中用到JDK動態代理)6.觀察者模式(listener的實現,例如ApplicationListener)7.策略模式(定義一系列的演算法,把它們一個個的封裝起來,並且使它們可以相互替換。在例項化物件時用到)8.模板模式(jdbcTemplate)
)

歡迎關注微信公眾號