Spring-是否可以获取所有通过@ComponentScan注册的软件包?

Art*_*hur 5 java spring spring-mvc

是否可以获取在@ComponentScan中注册的所有软件包的列表?我需要知道,Spring Boot应用程序中已经注册了哪些(根?)软件包...

Art*_*hur 2

可能的解决方案 -在运行时扫描 Java 注释

使用org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider

应用程序编程接口

从基础包扫描类路径的组件提供程序。然后,它将排除和包含过滤器应用于生成的类以查找候选者。

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());
Run Code Online (Sandbox Code Playgroud)