Java Spring-是否可以获得所有在@ComponentScan注册的软件包?
是否可以获取所有包的列表,并在@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.
我需要知道,在我的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());