JAXB 创建上下文和编组成本

2022-08-31 08:13:38

这个问题有点理论性,创建JAXB上下文,marshaller和unmarshaller的成本是多少?

我发现我的代码可以从保持相同的 JAXB 上下文中受益,并且可能为所有封送处理操作保留相同的封送处理器,而不是在每次封送处理上创建上下文和封送处理器。

那么创建 JAXB 上下文和编组/取消元帅的成本是多少呢?是否可以为每个封送操作创建上下文 + 封送处理程序,还是最好避免它?


答案 1

注意:我是EclipseLink JAXB(MOXy)负责人,也是JAXB 2(JSR-222)专家组的成员。

JAXBContext是线程安全的,应仅创建一次并重复使用,以避免多次初始化元数据的成本。 并且不是线程安全的,但创建起来很轻量级,可以按操作创建。MarshallerUnmarshaller


答案 2

理想情况下,您应该具有 和 的单例实例和本地实例。JAXBContextMarshallerUnmarshaller

JAXBContext实例是线程安全的,而实例不是线程安全的,永远不应该在线程之间共享。MarshallerUnmarshaller


推荐