gpt4 book ai didi

Java JSR-303 无需字节码编织的自动 Bean 验证

转载 作者:行者123 更新时间:2023-11-30 02:48:13 24 4
gpt4 key购买 nike

是否有一种方法可以执行(或多或少)“自动”JSR-303 java bean 验证,而无需对类进行运行时修改?

通常我看到人们使用 AspectJ 来完成此任务,但是在使用运行时代码编织(如 cofoja )时我们遇到了很多复杂情况,我想避免它。这使得我们的许多构建工具失败,因为运行时类文件与磁盘上的类文件不同。

我看过dynamic proxies通过反射,它只能代理接口(interface)(公共(public)方法),并且如果您调用“this”内注释的任何内容,您将不再通过代理,因此您会失去验证。

我还查看了 ByteBuddy通过包装/重新定义类来可能拦截方法调用的方法。这里可能有一些东西,但我无法弄清楚如何拦截私有(private)方法或完成上述操作而不返回修改原始类。

有什么想法吗?

最佳答案

理论上,您只能通过反射来强制执行 Bean 验证。但我认为“自动”是指无需显式调用验证方法。

在这种情况下,仪表化可能是您唯一的选择。借助 Byte Buddy,您可以通过使用重新定义或 rebase 来检测现有方法。最简单的方法是使用代理构建器的 Java 代理或使用 Gradle 或 Maven 插件进行构建时间检测。该文档提供了如何实现代理的示例,并且构建工具有大量 javadoc(文档正在进行中)。

关于Java JSR-303 无需字节码编织的自动 Bean 验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39521995/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com