0

我正在使用

Reflections reflections = new Reflections("com.mypackage.root", new MethodAnnotationsScanner()); 

但是通过这种方法,我得到了很多我不需要的包级别的注释......我真正想要的是这样的东西,使用通配符只返回深层包级别。

Reflections reflections = new Reflections("com.mypackage.root.*.deep", new MethodAnnotationsScanner())

因为我真正需要的方法是在“.deep”包级别......我尝试了很多与FilterBuilder的组合,然后我不知道我是否做错了什么,或者这对于这个API是不可能的

4

2 回答 2

1

尝试

Reflections reflections = new Reflections("com.mypackage.root", new MethodAnnotationsScanner());

Set<Method> methods = reflections
        .getMethodsAnnotatedWith(MyAnnotation.class).stream()
        .filter(method -> method.getDeclaringClass().getPackage().getName().matches("com.mypackage.root.*.deep"))
        .collect(Collectors.toSet());
于 2019-12-04T22:57:48.943 回答
0

下面的代码对我来说工作正常。

Reflections reflections = new Reflections(new ConfigurationBuilder()
                    .setUrls(ClasspathHelper.forPackage("com.package.root"))
                    .setScanners(new MethodAnnotationsScanner()));
    
Set<Method> methods = reflections.getMethodsAnnotatedWith(MyRequestMapping.class);

我使用了org.reflections依赖项。

<dependency>
    <groupId>org.reflections</groupId>
    <artifactId>reflections</artifactId>
    <version>0.9.12</version>
</dependency>
于 2021-06-15T08:43:03.237 回答