标签
作者
欢迎来到Hibernate社区通讯,在这里我们分享与用户特别相关的博客文章、论坛和StackOverflow问题。
欢迎来到Hibernate社区通讯,在这里我们分享与用户特别相关的博客文章、论坛和StackOverflow问题。
我们以前对Hibernate Validator中包含的约束非常保守,但最近我们改变了这项政策,并希望有更多内置的约束。
当然,我们不会接受一切:建议的约束需要是通用且定义良好的,但我们的想法是在Hibernate Validator中提供更多功能。
此篇文章将有助于那些有一些有趣的定制Bean Validation约束并希望与社区分享的人。
[ ... ]
Java 9中最令人兴奋的特性之一是模块化运行时镜像。使用新的jlink工具,您可以创建包含您的应用程序、其依赖项以及它需要的JDK模块的定制分布。例如,一个基于Undertow网络服务器的简单服务可以打包成仅25MB的镜像,包括所有电池。
虽然这已经很酷了,但还有更酷的,因为jlink提供了一个插件机制,允许在创建模块化运行时镜像时对其进行微调。JDK附带了一些jlink插件,例如用于压缩镜像内容或删除调试符号。但许多其他用例也可能受益于这个API,例如,可以想象用于删除未使用代码或对JPA实体进行字节码插装的插件。在下面的文章中,我们将创建一个插件,用于将注释索引添加到创建的镜像中。在运行时,这个索引可以非常有效地用于发现注释,即不加载类和反射。
听起来很棒?当然,但这有一个问题:截至Java 9,jlink插件API不是JDK的支持部分。实际上,其包甚至没有从jdk.jlink
模块中导出。这意味着需要一些技巧来创建自定义插件并使用这些插件启用jlink工具。API可能在未来的Java版本中发生变化,因此任何自定义插件都可能失效。
尽管如此,探索API并看看它能做什么绝对值得。我希望它最终能成为公共API。
欢迎来到Hibernate社区通讯,在这里我们分享与用户特别相关的博客文章、论坛和StackOverflow问题。
在Java 9中通过程序调用JDK工具
毫无疑问,模块系统(JPMS)是Java 9最突出的特性。但JDK还有很多其他有用的新增功能,还没有被广泛讨论。
其中之一是新的ToolProvider
SPI,它定义了一种统一的方式来程序化地调用JDK附带的所有工具(例如jar
、jlink
等)。例如,想象一下,你希望在Java应用程序内部创建一个JAR归档。在Java 9之前,你有两种方法来做这件事
-
启动一个单独的进程来运行
jar
二进制文件 -
找出
jar
命令内部使用的类,并直接调用它们
这两种选择都不是理想的。前者会因创建OS级别进程而造成一些开销,并且需要一些代码来定位Java家目录中的执行二进制文件,并正确捕获分叉进程的任何输出。第二种选择没有分叉新进程的缺点,但需要了解要执行的工具的实现。所以例如在jar
命令的情况下,你必须知道java.util.jar.JarOutputStream
用于生成JAR文件。
欢迎来到Hibernate社区通讯,在这里我们分享与用户特别相关的博客文章、论坛和StackOverflow问题。
欢迎来到Hibernate社区通讯,在这里我们分享与用户特别相关的博客文章、论坛和StackOverflow问题。
正如您所知,Bean Validation 2.0 几个月前已经发布,而 Hibernate Validator 6.0 是其参考实现。
Hibernate Validator 不是唯一的 Bean Validation 实现,我们还有一个(友好的)竞争对手,名为 Apache BVal。
Apache BVal 尚未赶上 Bean Validation 2.0,但根据 Bean Validation 领域的最后一次基准测试,该测试日期为 2010 年(还记得“Machete don’t text”吗?),我认为是时候重新审视这个基准测试并获取一些新鲜的数据。
特别是在我们对 6.0 版本进行的所有优化工作中。
欢迎来到Hibernate社区通讯,在这里我们分享与用户特别相关的博客文章、论坛和StackOverflow问题。