先說下自己的需求,我是想用ClassLoader來加載自己的類,用以做路由分發。思路是啓動一個線程然後動態加載類獲取類的註解,並用拿到的註解對象和註解對象對比,問題是:用main方式直接啓動線程拿到的註解對象和註解類對比是相等的,但是用spring 容器註解啓動後發現兩者不相等。以下是截圖:
main方式啓動:
解決思路:以main方式啓動他們都是用同一個ClassLoader加載 故動態加載的註解類是相等的,但是以spring boot注入方式啓動後 ClassLoader就不一樣了,所以導致了這裏拿到的註解對象和原註解對象不相等。解決方式:直接拿取spring的ClassLoader來加載需要的類這樣就可以使拿到的類對象相等了,因爲都是同一個ClassLoader加載的。
解決截圖:
不需要繼承ClassLoader 直接拿取spring 上下文中ClassLoader來加載要加載的類:
踩坑完畢。