Java jaxb2是如何保存JAXBContext的
我使用MarshallingMessageConverter作为MessageConverter bean的实现。我使用Jaxb2Marshaller作为org.springframework.oxm.Marshallerclass的实现。我将类设置为以这种方式绑定: marshaller.setClassesToBeBoundnew类[]{Class1.Class,Class2.Class} 此外,我还可以使用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
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控制的第一次使用时,都会为每次使用从上下文创建一个新的封送器。谢谢您的回答