是否可以获取使用@ComponentScan注册的所有包的列表? 我需要知道,在我的Spring Boot应用程序中注册了什么(root?)包...
答案 0 :(得分:1)
可能是长镜头,但每个@ComponentScan都应该与@Configuration一起使用(这只是另一种spring bean)。因此,您可以枚举应用程序上下文中的所有bean,并通过reflection检查哪些bean具有@ComponentScan并获取其值。
答案 1 :(得分:1)
可能的解决方案 - Scanning Java annotations at runtime
使用org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider
API
从基础包扫描类路径的组件提供程序。它 然后将排除和包含过滤器应用于结果类 找候选人。
ClassPathScanningCandidateComponentProvider scanner =
new ClassPathScanningCandidateComponentProvider(<DO_YOU_WANT_TO_USE_DEFAULT_FILTER>);
scanner.addIncludeFilter(new AnnotationTypeFilter(<TYPE_YOUR_ANNOTATION_HERE>.class));
for (BeanDefinition bd : scanner.findCandidateComponents(<TYPE_YOUR_BASE_PACKAGE_HERE>))
System.out.println(bd.getBeanClassName());