Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java com.fasterxml.jackson.core.Version的用途_Java_Jackson Modules - Fatal编程技术网

Java com.fasterxml.jackson.core.Version的用途

Java com.fasterxml.jackson.core.Version的用途,java,jackson-modules,Java,Jackson Modules,我正试图理解杰克逊·科里的演讲的目的。文件说 对象,该对象封装组件的版本控制信息。版本信息不仅包括版本号,还包括被版本控制的组件的可选组和工件ID 但这一解释看起来微不足道。它只是说保留版本信息,但没有说指定版本会产生什么效果。我只看到下面这样的例子 SimpleModule module = new SimpleModule("ModuleName", new Version(1, 0, 0, null, null, null)); 其中添加了新模块(例如注册自定义序列化程序/反序列化

我正试图理解杰克逊·科里的演讲的目的。文件说

对象,该对象封装组件的版本控制信息。版本信息不仅包括版本号,还包括被版本控制的组件的可选组和工件ID

但这一解释看起来微不足道。它只是说保留版本信息,但没有说指定版本会产生什么效果。我只看到下面这样的例子

SimpleModule module = 
  new SimpleModule("ModuleName", new Version(1, 0, 0, null, null, null));
其中添加了新模块(例如注册自定义序列化程序/反序列化程序),但不清楚版本的效果


有人能解释一下吗?

它为非Jackson代码提供了一种动态方式来检查Jackson组件的版本:既有核心实体,如
JsonFactory
ObjectMapper
,也有扩展模块。所有官方组件都会生成此信息,以便在运行时其他代码可以检查版本(如果他们对此感兴趣的话)

这可以用于:

  • 诊断:对于较大的系统,最好验证运行时使用的版本是否确实是计划的版本(构建/部署系统有时可能会变得非常复杂,从而产生冲突)
  • 强制执行一致的组件集:例如,扩展模块可能会检查
    ObjectMapper
    的版本,以确保该版本至少符合某个最低版本
但至于Jackson是如何使用它的:目前它主要是作为Jackson外部代码的元数据提供的。虽然它可以被模块使用(对于3.0来说,也许会),但我知道目前唯一使用此信息的模块是Jackson Scala模块,它拒绝使用具有较旧次要版本的
Jackson databind
版本(例如,带有Scala模块2.6的databind 2.5):这是为了减少“无声”错误的可能性,类加载成功但预期行为可能存在差异的情况

您的自定义模块不需要提供有意义的版本号,尽管这样做是一种很好的做法。 Jackson的
pom.xml
s包含插件设置,以生成返回maven版本号的类。这是通过模板文件完成的,如:

src/main/java/com/fasterxml/jackson/databind/cfg/PackageVersion.java.in 
(如果是
jackson数据绑定

使用Maven版本信息进行处理,生成Java源类,然后由
ObjectMapper
(等人)编译和使用。
(之前,读取include
pom.xml
是为了获得相同的信息,但在某些平台(特别是Android平台)上,当VM需要保持资源文件可用时,这会产生巨大的开销)。

完成其工作,公共静态最终版本=VersionUtil.parseVersion(“2.5.1”,“com.fasterxml.jackson.core”,“jackson core”);