当Spring与JAXB一起用于编组和解编组时,内部使用的是哪个流实现?
response = (AResponse) webSvcTemplate.marshalSendAndReceive(request);阅读SO查询,发现Woodstox比JAXB更快。然而,在我使用Spring时,Spring实际上负责处理编组和解编组过程中发生的所有事情。
问题是如何强制Spring使用Woodstox流API?
发布于 2014-08-14 09:35:48
当Spring与JAXB一起用于编组和解编组时,内部使用的是哪个流实现?
这取决于您启用了哪个WebServiceMessageFactory。默认情况下,Spring使用基于DOM的SAAJ (即SaajSoapMessageFactory),它根本不执行任何流操作,因为整个XML结构都存储在内存中。您可以从SAAJ切换到Axiom (即AxiomSoapMessageFactory),它可以执行基于StAX的流。见参考文档。
阅读SO查询,发现Woodstox比JAXB更快。
这实际上取决于上下文:消息的大小、正在运行的硬件等。从个人经验来看,对于“中小型”SOAP消息来说,流的速度并不明显。
另外,您在这里比较苹果和桔子: Woodstox是一个StAX实现,是一个XML解析器。JAXB是一个封送处理库,它使用StAX (但也包括SAX和DOM)等解析器从XML构建Java对象。
然而,在我使用Spring时,Spring实际上负责处理编组和解编组过程中发生的所有事情。
这不是很棒吗?)
问题是如何强制Spring使用Woodstox流API?
简单地将Woodstox放在类路径上就足够了,Spring将自动将其捡起来。不过,您必须切换到Axiom (见上面),才能注意到任何不同之处。即使如此,我也敢打赌,表现上的差异并没有那么大。
https://stackoverflow.com/questions/25280123
复制相似问题