类对象缺少春天注释

时间:2019-12-15 13:47:16

标签: java spring plugins reflection annotations

我正在编写一个插件,可以在编译时扫描我项目的代码,并找到控制器以确保它们具有我创建的其他自定义注释。

由于某些原因,Spring的所有注释都不会出现在

的注释数组中
Class<?> clazz = classInfo.load();
Annotation[] annotations = clazz.getAnnotations();

为什么此数组中缺少spring注释?在哪里可以找到他们?

这是我的相关代码:

URL[] urls;
List<URL> listOfURL = new ArrayList<>();
SourceSetContainer ssc = getProject().getConvention().getPlugin(JavaPluginConvention.class).getSourceSets();
File classesDir = ssc.getByName("main").getOutput().getClassesDir();
listOfURL.add(classesDir.toURI().toURL());
urls = listOfURL.toArray(new URL[0]);
final ClassLoader loader = new URLClassLoader(urls);
ClassPath classpath = ClassPath.from(loader); // scans the class path used by classloader
for (ClassPath.ClassInfo classInfo : classpath.getTopLevelClassesRecursive(packageName)) {
    if (classInfo.getName().toLowerCase().contains("controller")) {
        Class<?> clazz = classInfo.load();
        if (clazz.isAnnotationPresent(RestController.class)) {
            Method[] methods = clazz.getMethods();
            for (Method method : methods) {
                doSomething(clazz, method);
            }
        }
    }
}

这是我的一个控制器的示例:

@RestController
@RequestMapping(path = "api/v2/users/me/likes")
public class LikesController {

    @Deprecated
    @GetMapping
    public ResponseEntity getUserLikes(){
        return ResponseEntity.ok(LikesResource.builder().build());
    }

}

在我的插件中,注释数组为空。只是为了进行测试,我在上面添加了“已弃用”注释,它已经存在,但仍然没有Spring的注释...

0 个答案:

没有答案