如何在spring 容器中動態加載類

  先說下自己的需求,我是想用ClassLoader來加載自己的類,用以做路由分發。思路是啓動一個線程然後動態加載類獲取類的註解,並用拿到的註解對象和註解對象對比,問題是:用main方式直接啓動線程拿到的註解對象和註解類對比是相等的,但是用spring 容器註解啓動後發現兩者不相等。以下是截圖:

main方式啓動:

  解決思路:以main方式啓動他們都是用同一個ClassLoader加載 故動態加載的註解類是相等的,但是以spring boot注入方式啓動後 ClassLoader就不一樣了,所以導致了這裏拿到的註解對象和原註解對象不相等。解決方式:直接拿取spring的ClassLoader來加載需要的類這樣就可以使拿到的類對象相等了,因爲都是同一個ClassLoader加載的。

  解決截圖:

不需要繼承ClassLoader 直接拿取spring 上下文中ClassLoader來加載要加載的類:

踩坑完畢。

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