Java Spring-是否可以获得所有在@ComponentScan注册的软件包?

Java Spring-是否可以获得所有在@ComponentScan注册的软件包?,java,spring,spring-mvc,Java,Spring,Spring Mvc,是否可以获取所有包的列表,并在@ComponentScan中注册? 我需要知道,在我的Spring Boot应用程序中注册了哪些(root?)包…可能还有很长的路要走,但是每个@ComponentScan都应该与@Configuration一起使用(这只是另一种Spring bean)。因此,您可以从应用程序上下文中枚举所有bean,并通过它们中的哪一个具有@ComponentScan并获取其值。可能的解决方案- 使用org.springframework.context.annotation.

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

可能还有很长的路要走,但是每个@ComponentScan都应该与@Configuration一起使用(这只是另一种Spring bean)。因此,您可以从应用程序上下文中枚举所有bean,并通过它们中的哪一个具有@ComponentScan并获取其值。

可能的解决方案-

使用
org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider

原料药

从基本包扫描类路径的组件提供程序。信息技术 然后将排除和包含筛选器应用于生成的类,以 寻找候选人

ClassPathScanningCandidateComponentProvider扫描仪=
新建ClassPathScanningCandidateComponentProvider();
addIncludeFilter(新的AnnotationTypeFilter(.class));
对于(BeanDefinition bd:scanner.findCandidateComponents())
System.out.println(bd.getBeanClassName());
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());