Java中Spring、SpringMVC、MyBatis、Hibernate等相關問答

1、Spring依賴注入通常有哪些實現方式?
Spring的實現方式通常有兩種,一種是屬性setter方法注入,另一種是構造方法注入。
屬性setter方法注入是指IOC容器使用setter方法來注入被依賴的實例。通過使用無參構造器或無參靜態工廠方法實例化Bean後,調用該Bean的setter方法,即可實現基於setter方法的依賴注入。
構造方法注入是指IOC容器使用構造方法來注入被依賴的實例。基於構造方法的依賴注入通過調用帶參數的構造方法來實現,沒個參數代表着一個依賴。
2、 請簡述基於XM的裝配方式中設置注入的要求
(1)Bean類必須提供一個默認的無參構造方法
(2)Bean類必須爲需要注入的屬性提供對應的setter方法
3、請對Spring的通知類型進行簡要說明
Spring中主要包含5種通知類型,分別是環繞通知、前置通知、後置通知、異常通知和最終通知。
環繞通知表示在目標方法執行前後實施增強,可以應用於日誌、事務管理等功能。
前置通知表示在目標方法執行前實施增強,可以應用於權限管理等功能。
後置通知表示在目標方法執行後實施增強,可以應用於關閉流、上傳文件、刪除臨時文件等功能。
異常通知表示在方法拋出異常後實施增強,可以應用於處理異常記錄日誌等功能。
引介通知表示在目標類中添加一些新的方法和屬性,可以應用於修改老版本程序(增強類)。
4、請簡述如何使用Junit對程序中的方法進行測試
使用Junit對程序中的方法進行測試時的步驟如下:
(1)先創建一個普通測試方法,並在方法上添加單元測試的註解@Test;
(2)添加@Test註解後,在註解處會報錯,將鼠標移動至@Test註解處,會彈出錯誤提示框,,單擊提示框中的Add JUnit4 library to the build path後,Eclipse會自動將JUnit4的支持包加入到項目中;
(3)在執行程序時,只需使用鼠標右鍵單擊測試方法,在彈出的快捷菜單中選擇Run As中的JUnit Test選項來運行測試方法即可。
5、請列舉PlatformTransactionManager接口提供了有哪些事務操作方法,並對這些方法分別進行簡單說明。
PlatformTransactionManager接口中提供了三個事務操作方法開具體如下所示:
(1)TransactionStatus getTransaction (TransactionDefinition definition):用於獲取事務狀態信息。
(2) void commit (TransactionStatus status):用於提交事務。
(3) rollback(): 用於回滾事務。
6、請簡述Hibernate和MyBatis這兩個框架的主要區別。
Hibernate是一個全表映射的框架。通常開發者只需定義好持久化對象到數據庫表的映射關係,就可以通過Hibernate提供的方法完成持久層操作,開發者並不需要熟練的掌握SQL語句的編寫,所以其開發效率會高於MyBatis。而Hibernate自身也存在着一些缺點、例如它在多表關聯時,對SQL查詢的支持較差;
更新數據時,需要發送所有字段; 不支持存儲過程;
不能通過優化SQL來優化性能等。這些問題導致其只適合在場景不太複雜且對性能要求不高的項目中使用。
MyBatis是一第個半自動映射的框架。這裏所謂的“半自動”是相對於Hibernate全表映射而言的。
與Hbernate相比,雖然使用MyBatis手動編寫SQL要比使用Hibernate的工作量大,但MyBatis可以配置動態SQL並優化SQL,可以通過配置決定SQL的映射規則,它還支持存儲過程等。對於一些複雜的和需要優化性能的項目來說,顯然使用MyBatis更加合適。
7、請簡述元素的作用及使用
<sql>元素的作用就是定義可重用的SQL代碼片段,
使用時,先通過元素定義重用的代碼片段,然後在需要使用的地方使用元素的refid屬性引用了自定義的代碼片段。

<sql id=”studentColumns”>id,name,age</sql> 
<select id=”selectStudentById” resultType=”student”>
 		Select
 		<include refid=”studentColumns”/>
 		from student where id=#{id}
<select>

8、請簡述MyBatis動態SQL中的主要元素及說明。
<if>:判斷語句,用於丹田減分制判斷;
<choose><when><otherwise>):相當於Java中的switch…case…default語句,用於多條件分支判斷;
<where><trim><set>:輔助元素,用於處理一些SQL拼裝、特殊字符問題;
<foreach>:循環語句,常用語in語句等列舉條件中;
<bind>:從OGNL表達式中創建一個變量,並將其綁定到上下文,常用於模糊查詢的SQL中。
9、請簡要說明MyBatis在映射文件中加載關聯關係對象的方式。
MyBatis在映射文件中加載關聯關係對象主要通過兩種方式:嵌套查詢和嵌套結果。
嵌套查詢是指通過執行另外一條SQL映射語句來返回預期的複雜類型; 嵌套結果是指使用嵌套結果映射來處理重複的聯合結果的子集。
10、請簡述springMVC的特點
1.用於MVC控制,進行M、V、C劃分;
2.是Spring框架的一部分,可以方便的利用Spring所提供的其他功能;
3.靈活性強,易於與其他框架集成;
4.提供了一個前端控制器DispatcherServlet,使開發人員無需額外開發控制器對象;
5.可自動綁定用戶輸入,並能正確的轉換數據類型;
6.內置了常見的校驗器,可以校驗用戶輸入。如果校驗不能通過,那麼就會重定向到輸入界面。
7.支持國際化。可以根據用戶區域顯示多國語言。
11、請簡述ModelAndView、String和void三種返回類型的作用
ModelAndView類型中可以添加Model數據,並指定視圖;
String類型的返回值可以跳轉視圖,但不能攜帶數據;
Void類型主要在異步請求時使用,它只返回數據,而不會跳轉視圖。
12、爲什麼需要自定義數據綁定
一般情況下,使用基本數據類型和POJO類型的參數數據已經能夠滿足需求,然而有些特殊類型的參數是無法在後臺進行直接跳轉的,例如日期數據就需要開發者自定義轉換器(Converter)或格式化(Formatter)來進行數據綁定。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章