0

好的,所以我想使用 aClassPathScanningCandidateComponentProvider来查找具有使用自定义注释注释的方法的组件。

我以前做过类似的。但是,这一次,我在一个应用程序正在使用的库中,我无法对包名称做出任何假设。

特别是,分别注释的类可能在我正在使用的库和使用它的应用程序中。

IE

object AnnotatedClassesFinder {
    @JvmStatic
    fun <A : Annotation> findClassesAnnotated(annotationClass: Class<A>): Collection<Class<*>> {
        return createScanner(annotationClass)
            .findCandidateComponents("com.app.my") //<-- need to find this constant (may be multiple)
            .map(BeanDefinition::getBeanClassName)
            .map { Class.forName(it) }
    }

    
    private fun <A : Annotation> createScanner(annotationClass: Class<A>): ClassPathScanningCandidateComponentProvider {
        return ClassPathScanningCandidateComponentProvider(false).apply {
            addIncludeFilter(AnnotationTypeFilter(annotationClass))
        }
    }
}

如何获取 Spring 当前用于其组件扫描的所有基本包?

4

0 回答 0