[英]Using ClassPathScanningCandidateComponentProvider with multiple jar files?
我正在尋找使用ClassPathScanningCandidateComponentProvider來查找我的JVM中特定類的子類。
我正在做的就是這里描述的內容: 在運行時掃描Java注釋
但是,當我從ant調用代碼時,通過JMX bean我遇到了一個嚴重的問題。
我用搜索包調用:ClassPathScanningCandidateComponentProvider.findCandidateComponents:“com.mycompany”
但是,我的類路徑中有多個jar文件包含以該包開頭的類。 Spring掃描完第一個后停止掃描(我知道這就好像我搜索java.lang.Object的sublasees一樣,我在一個jar文件中得到所有類)。
有沒有辦法告訴ClassPathScanningCandidateComponentProvider / Spring在第一個jar之后不要停止掃描?
干杯
事實證明我必須明確定義ClassLoader,因為當從JMX運行掃描時,它將在不同的加載器上查找類並且什么也找不到
//Add that at top of class
private static final ClassLoader classLoader = MyClass.class.getClassLoader();
...
ClassPathScanningCandidateComponentProvider provider = new ClassPathScanningCandidateComponentProvider( true);
provider.addIncludeFilter(new AssignableTypeFilter(forClass));
//Had to add this line
provider.setResourceLoader(new PathMatchingResourcePatternResolver(classLoader));
final Set<BeanDefinition> candidates = provider.findCandidateComponents(SEARCH_PACKAGE);
...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.