寫一個web service, 總是400. 說是request有問題,server不識別。然而檢查了很多次都沒問題。最終問題指向spring對參數的解析和注入。
一個controller中可以自定義參數,只要參數和request的參數匹配就會自動注入。針對自定義POJO,顯然是spring幫忙給new了一個新的,然后把參數扔進去。
測試發現,不是setter方法的問題。
最后,發現自己在POJO中添加了個構造函數但卻么有聲明無參構造函數,這樣導致spring無法調用無參構造函數,於是bad request就產生了。至於深層次的原因,需要深入resolve源碼去查看。
問題原因:
1. 沒有對原理深入理解,沒有對源碼熟悉。
2. log顯示問題,由於使用cmd打開的tomcat,錯誤輸出很不友好,幾乎不會去看。雖然很費解為什么公司的架構師設計控制為cmd,但目前只能認真去看了。