Java com.fasterxml.jackson.core.Version的用途
我正试图理解杰克逊·科里的演讲的目的。文件说 对象,该对象封装组件的版本控制信息。版本信息不仅包括版本号,还包括被版本控制的组件的可选组和工件ID 但这一解释看起来微不足道。它只是说保留版本信息,但没有说指定版本会产生什么效果。我只看到下面这样的例子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)); 其中添加了新模块(例如注册自定义序列化程序/反序列化
SimpleModule module =
new SimpleModule("ModuleName", new Version(1, 0, 0, null, null, null));
其中添加了新模块(例如注册自定义序列化程序/反序列化程序),但不清楚版本的效果
有人能解释一下吗?它为非Jackson代码提供了一种动态方式来检查Jackson组件的版本:既有核心实体,如
JsonFactory
和ObjectMapper
,也有扩展模块。所有官方组件都会生成此信息,以便在运行时其他代码可以检查版本(如果他们对此感兴趣的话)
这可以用于:
- 诊断:对于较大的系统,最好验证运行时使用的版本是否确实是计划的版本(构建/部署系统有时可能会变得非常复杂,从而产生冲突)
- 强制执行一致的组件集:例如,扩展模块可能会检查
的版本,以确保该版本至少符合某个最低版本ObjectMapper
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”);