標籤:primary ... gpo 遇到的問題 res col resource mon color
最近在做一個sb+tkmybatis整合的可以提供通用資料操作介面的demo,然而出現了很詭異的事情.,使用mapper提供的selectByPrimaryKey介面返回結果時報異常:
java.lang.ClassCastException: com.yhq.ssmdemo.web.mysql.pojo.Tree cannot be cast to com.yhq.ssmdemo.web.mysql.pojo.Trees
...什麼鬼?自己轉換自己?還報異常?搞了一整天都不知道怎麼回事,去看mybatis源碼,mapper源碼,都沒發現會造成這種問題的代碼..然後在另外一個不用springboot的demo裡面試了卻不會出現這種問題。然後我又開始研究是不是spring boot自動設定時少了某些東西,但也沒發現,而且也不會是這種問題吧...然後後面上網搜了下(之前也搜過,但可能關鍵字不準確導致搜出來的沒有想要的結果),然後發現了一個同樣的問題,說這是工具造成的一個bug,但我還以為是mapper工具,看了他給出的解決方案然後才知道是spring devtools這個工具。由於是本地開發的,所以用了spring devtools工具來進行監測代碼修改自動重啟,我們知道這個工具的原理就是使用兩個類載入器,一個載入不會改變的第三方的依賴jar;另一個載入自己項目中自己編寫的類。所以會出現這個異常就是由於這個問題導致的,下面,這樣可以更加清晰直觀地看出來,
這個是在項目啟動spring devtools模組時進行堆dump的圖,可以看到我自己寫的許多類都有兩個:
這個是項目不啟用spring devtools模組的堆dump圖,自己寫的類只有一個:
所以這完全就是spring devtools的使用導致的,那怎麼解決呢?讓同一個類載入器去載入mapper的jar和自己寫的實體類就行了:
在項目的src/main/resources目錄下建立一個目錄:META-INF,然後建立一個spring-devtools.properties檔案,內容為:restart.include.companycommonlibs=tk/mybatis.*即可。
spring boot+tkmybatis(mapper)工具實現通用資料操作介面時遇到的問題