類路徑加載

Class:通過其ClassLoader加載,/絕對路徑,即去掉/可直接傳入ClassLoader加載,沒有/相對路徑,即相對此類的所在路徑進行加載,拼接後傳入ClassLoader

ClassLoader:沒有/, 如xu/zhi/Test.class, 在classpath加載(包括jar),先委託parent ClassLoader加載,可加載一個getResource(找到第一個即返回)或多個getResources(多個jar都有同一文件)
路徑可以是文件或目錄

 spring 有個專門的classpath和classpath*, classpath*即加載多個(路徑去掉classpath*前綴傳入ClassLoader),classpath加載一個(一般我們ClassLoader加載路徑是classes目錄放在jar前面,故優先在classes下加載)

分析@ComponentScan, 其用asm分析class文件,Reflections類庫(默認用JavassistAdapter,分析class文件,JavaReflectionAdapter加載類後再獲取信息)
相對反射,class文件提供的信息不完全,如interfaces只提供直接實現或繼承的接口,但反射需類加載,掃描我們不想加載路徑下所有類再判斷,Reflections可以通過遞歸的方式來獲取直接和間接的子類子實現類

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