2 回答
TA贡献1942条经验 获得超3个赞
事实证明,有一个实用程序集AnnotatedElementUtils可以让您处理那些合并的注释。
for (Object annotated : context.getBeansWithAnnotation(ComponentScan.class).values()) {
Class clazz = ClassUtils.getUserClass(annotated) // thank you jin!
ComponentScan mergedAnnotation = AnnotatedElementUtils.getMergedAnnotation(clazz, ComponentScan.class);
if (mergedAnnotation != null) { // For some reasons, this might still be null.
// TODO: useful stuff.
}
}
TA贡献1909条经验 获得超7个赞
它可能是 CglibProxy。所以不能直接获取Annotation。
ClassUtils.isCglibProxyClass(o)
有关更多信息,请参阅此
编辑,你可以添加你的逻辑代码。找到 ComponentScan。
if (ClassUtils.isCglibProxyClass(o.getClass())) {
Annotation[] annotations = ClassUtils.getUserClass(o).getAnnotations();
for (Annotation annotation : annotations) {
ComponentScan annotation1 = annotation.annotationType().getAnnotation(ComponentScan.class);
// in my test code , ComponentScan can get here.for @SpringBootApplication
System.out.println(annotation1);
}
}
添加回答
举报