Marshalling.getProvidedMarshallerFactory("serial") 参数有那些

在 Eclipse Modeling Framework (EMF) 或其他支持数据编组(Marshalling)的框架中,Marshalling.getProvidedMarshallerFactory("serial") 方法用于获取特定类型的 Marshaller(序列化器)工厂。其中 "serial" 是一个预定义的参数,表示使用 默认的序列化方式(通常是 Java 原生序列化)。

可用的 MarshallerFactory 参数(常见选项)

不同的框架可能支持不同的参数,以下是常见的几种:

1. 标准 EMF 支持的 Marshaller 类型

参数值说明适用场景
"serial" 使用 Java 原生序列化(java.io.Serializable 简单对象存储、进程间通信
"xml" 使用 XML 序列化(如 EMF 的 Resource.XMLResource 跨平台数据交换、配置文件存储
"xmi" 使用 XMI (XML Metadata Interchange) 格式(EMF 默认的 XML 序列化格式) EMF 模型持久化
"json" 使用 JSON 序列化(需额外依赖,如 EMF Json 扩展) Web API、轻量级数据交换
"binary" 使用 二进制格式(比 XML/JSON 更紧凑) 高性能存储、网络传输优化
"hibernate" 与 Hibernate 集成(用于 ORM 映射) 数据库存储
"yaml" 使用 YAML 序列化(需额外库支持) 可读性强的配置文件

2. 其他框架(如 Jackson、JAXB)的 Marshaller 类型

如果使用的是 Jackson 或 JAXB 等库,参数可能不同:

  • Jackson:

    • "json"(默认)

    • "xml"(需 jackson-dataformat-xml

    • "yaml"(需 jackson-dataformat-yaml

  • JAXB:

    • "xml"(默认)

    • "json"(需额外适配器,如 MOXy)


示例代码(EMF 中使用不同 Marshaller)

// 获取 XML Marshaller 工厂
Marshaller.Factory xmlFactory = Marshalling.getProvidedMarshallerFactory("xml");

// 获取 JSON Marshaller 工厂(需 EMF Json 扩展)
Marshaller.Factory jsonFactory = Marshalling.getProvidedMarshallerFactory("json");

// 获取二进制 Marshaller 工厂
Marshaller.Factory binaryFactory = Marshalling.getProvidedMarshallerFactory("binary");

如何查看支持的参数?

  1. 查阅框架文档(如 EMF、Jackson、JAXB 官方文档)。

  2. 调试或反射查看(某些框架可能通过 SPI 动态加载 Marshaller):

    // 示例:查看 EMF 所有注册的 Marshaller 工厂
    Set<String> supportedFormats = Marshalling.getProvidedMarshallerFactories().keySet();
    System.out.println("Supported formats: " + supportedFormats);

    总结

    • "serial" 只是其中一种选项,常见参数还包括 "xml""json""xmi""binary" 等。

    • 具体支持哪些参数取决于 框架实现 和 已加载的扩展库。

    • 如果需自定义格式,可实现 Marshaller.Factory 接口并注册到框架。


posted @ 2025-05-29 15:35  三驾马车  阅读(20)  评论(0)    收藏  举报