有没有一种方法可以执行(或多或少)“自动”JSR-303 java bean 验证,而无需对类进行运行时修改?
通常我看到人们使用 AspectJ 来实现这一点,但是在使用运行时代码编织(如cofoja )时我们遇到了很多复杂情况,我想避免它。它使我们的许多构建工具失败,因为运行时类文件与磁盘上的类文件不同。
我已经通过只能代理接口(公共方法)的反射查看了动态代理,并且如果您在“this”中调用任何带注释的内容,您将不再通过代理,因此您将失去该验证。
我还查看了ByteBuddy,寻找一种通过包装/重新定义类来拦截方法调用的方法。这里可能有一些东西,但我不知道如何拦截私有方法或完成上述操作,而无需重新修改原始类。
有任何想法吗?