Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.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 jaxb2是如何保存JAXBContext的_Java_Spring Boot_Jaxb_Spring Jms_Jaxb2 - Fatal编程技术网

Java jaxb2是如何保存JAXBContext的

Java jaxb2是如何保存JAXBContext的,java,spring-boot,jaxb,spring-jms,jaxb2,Java,Spring Boot,Jaxb,Spring Jms,Jaxb2,我使用MarshallingMessageConverter作为MessageConverter bean的实现。我使用Jaxb2Marshaller作为org.springframework.oxm.Marshallerclass的实现。我将类设置为以这种方式绑定: marshaller.setClassesToBeBoundnew类[]{Class1.Class,Class2.Class} 此外,我还可以使用JAXBContext类设置类,并检索封送拆收器和解封送拆收器: JAXBConte

我使用MarshallingMessageConverter作为MessageConverter bean的实现。我使用Jaxb2Marshaller作为org.springframework.oxm.Marshallerclass的实现。我将类设置为以这种方式绑定:

marshaller.setClassesToBeBoundnew类[]{Class1.Class,Class2.Class}

此外,我还可以使用JAXBContext类设置类,并检索封送拆收器和解封送拆收器:

JAXBContext.newInstance(Class1.class,Class2.class)
jaxbContext.createMarshaller();
jaxbContext.createUnmarshaller();
这与Jaxb2Marshaller类似,因为它具有JAXBContext的内部字段。为每个解析请求创建新的JAXBContext非常昂贵


我的问题是:如果我使用Jaxb2Marshaller声明Marshaller,那么在这个调用中要绑定的所有类Marshaller.SetClasseStobeBoundNewClass[]{Class1.Class,Class2.Class}将在每个解析请求中重用,并且是线程安全的,或者将为每个请求再次创建来自这些类的JAXBContext?我使用这个Jaxb2Marshaller作为Bean

根据JAXB规范-JAXBContext是线程安全的。Marshaller和Unmarshaller不是而且应该每次使用创建一次,或者使用某种线程安全服务包装,以同步对Marshaller和Unmarshaller的访问。

并回答OP问题;Spring使用一个上下文—无论是在初始化期间还是在lazyInit控制的第一次使用时,都会为每次使用从上下文创建一个新的封送器。谢谢您的回答