天天看點

Java Web技術經驗總結(四)

spring mvc中傳回json資料的不同方法

利用<code>@responsebody</code>注解修飾控制器方法,并在xxx-servlet.xml中開啟spring mvc支援——<code>&lt;mvc: annoation-driven/&gt;</code>,這種機制背後的原理是messageconverter。

最近用mockito寫單元測試的感受,單元測試有兩點好處:(1)利于解耦代碼,降低代碼的耦合性,在寫單測的過程中,你會不自覺将不屬于目前業務邏輯的代碼分割出去;(2)單元測試是修改代碼的有力保障,使得我們在修改代碼之後能及時測試本次修改是否正确。總之:單元測試并不隻是為了驗證你目前所寫的代碼是否存在問題,更為重要的是它可以很大程度的保障日後因業務變更、修複bug或重構等引起的代碼變更而導緻(或新增)的風險。

idea的使用經驗

必備插件:maven helper,用于分析jar包沖突

常用快捷鍵

idea的左下角,灰色方塊,光标cover上去以後可快速喚出各個view

comman + y,删除一行

alt + enter:當光标在類名時,使用該快捷鍵可以建立測試用例、建立子類和使得該類局部化;當光标在局部變量上時,使用該快捷鍵可以添加javadoc、轉變成threadlocal變量、轉變成atomic變量、改變變量的開放級别;當光标在函數上時,也有對應的功能,可自己去探索;

alt + command + u:将光标放在某個類上,通過該快捷鍵可以構造出該類所屬的繼承體系,如下圖所示:

Java Web技術經驗總結(四)

viewresolver的繼承體系

git版本管理

檢視commit記錄

檢視每個commit的修改記錄

檢視指定檔案的修改曆史

比較不同版本直接的diff

送出代碼(送出之前可做靜态掃描、優化import、檢視todo等)

分支合并,區分rebase和merge的差別

遠端調試功能 :在edit configuration中可建立remote,指定遠端伺服器的ip位址和端口,即可遠端調試

性能測試時需要注意的

日志級别調成warn級别;

mybatis報錯:“error querying database. cause: java.lang.unsupportedoperationexception”,錯誤代碼如下:

在這裡,resulttype指的是查詢到的每條記錄的類型,是以應該用<code>java.lang.string</code>。

作為一個對外開放的接口,或者供其他子產品調用的接口,必須做到以下幾件事:

入參檢查

異常處理

統一的結果生成

配套的單元測試和接口測試用例,防止代碼修改引入新的bug

在通過url參數傳入時間時,背景可考慮使用initbinder自動将時間字元串轉換成date對象,并綁定到controller的入參,例子代碼如下:

常用git作為代碼管理工具,除了熟練使用idea中提供的圖形化git管理功能,也需要了解這些gui背後對應的指令,那麼久需要看如下資料:

<a href="http://backlogtool.com/git-guide/cn/" target="_blank">猴子都能懂的git入門</a>

<a href="https://git-scm.com/book/en/v2" target="_blank">pro git(v2)</a>

引用官方文檔中的一張圖檔,可以清晰地看出dispatcherservlet上下文和root應用上下文之間的關系:root應用上下文用于提供service、資料庫等bean,可供多個dispatcherservlet上下文使用。

Java Web技術經驗總結(四)

mvc-context-hierarchy.png

最後,再重溫下spring mvc的處理流程,在進行java web開發的時候,也時刻不要忘記對httprequest的處理流程。

Java Web技術經驗總結(四)

spring mvc詳細運作流程圖.png