Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: AutoMapping与AutoMapper增加@Retention元注解 #125

Open
wants to merge 2 commits into
base: main
Choose a base branch
from

Conversation

lipanre
Copy link

@lipanre lipanre commented Dec 20, 2024

在AutoMapper与AutoMapping上添加@repeatable元注解,可以实现在类或者属性上使用多次注解但不需要声明@AutoMappers与@AutoMappings
可以由这种声明方式
image
调整为这种声明方式
image

Copy link

vercel bot commented Dec 20, 2024

The latest updates on your projects. Learn more about Vercel for Git ↗︎

Name Status Preview Comments Updated (UTC)
mapstruct-plus ✅ Ready (Inspect) Visit Preview 💬 Add feedback Dec 22, 2024 4:35pm

@linpeilie
Copy link
Owner

虽然JDK支持这种注解,但在实现过程中,用到了 MapStruct 的 gem,这个没有支持这种。需要自己实现一个 gem,实现再引入。

@linpeilie
Copy link
Owner

例如 AutoMapper,会通过 gem-processor,生成 AutoMapperGem,而生成的这个类中,目前只支持获取一个类定义的其中一个 AutoMapper 注解。代码如下:

    public static  <T> T  build(Element element, Builder<T> builder) {
        AnnotationMirror mirror = element.getAnnotationMirrors().stream()
            .filter( a ->  "io.github.linpeilie.annotations.AutoMapper".contentEquals( ( ( TypeElement )a.getAnnotationType().asElement() ).getQualifiedName() ) )
            .findAny()
            .orElse( null );
        return build( mirror, builder );
    }

需要修改这部分生成的逻辑,和具体使用到的地方。

@lipanre
Copy link
Author

lipanre commented Dec 22, 2024

好的,这块我没想到,我了解一下

@lipanre
Copy link
Author

lipanre commented Dec 22, 2024

你好,我这边调试了一下,对于写法从
image
更改为
image
之后,在AutoMapperProcessor中,通过RoundEnvironment#getElementsAnnotatedWith(AutoMappers)是可以正常拿到这个类然后正常按照原来的流程走下去的,截图如下:
image
@AutoMapping也是一样
image
我增加了测试用例在:io.github.linpeilie.QuickStartTest#testMultiMapper,您有时间可以看看

@lipanre
Copy link
Author

lipanre commented Dec 22, 2024

目前我这边验证生成的结果也是正确的

@linpeilie
Copy link
Owner

你这个没有 install,用的还是线上的包吧,按照你这个写法,不应该能获取到 AutoMappers 注解了。但debug还能看到

@lipanre
Copy link
Author

lipanre commented Jan 12, 2025

我这边在install之后,测试结果也是一样的,你有时间可以试一下

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants