Spring批处理Jaxb2Marshaller共享JAXBContext

Spring批处理Jaxb2Marshaller共享JAXBContext,jaxb,spring-batch,Jaxb,Spring Batch,我正在使用StatxeventitemReader来解组xml。在我的导入过程中,可能会有许多相同类型的文件(我使用自定义分区器为每个线程读取1个文件),我得到了很多: o、 s.oxm.jaxb.Jaxb2Marshaller:使用 要绑定的类 我读到JAXBContext是线程安全的。因此,似乎该部分可以改进,并且仅使用一个实例 我正在使用这个阅读器: public class MultiResourceXmlImportReader<T> extends MultiResour

我正在使用StatxeventitemReader来解组xml。在我的导入过程中,可能会有许多相同类型的文件(我使用自定义分区器为每个线程读取1个文件),我得到了很多:

o、 s.oxm.jaxb.Jaxb2Marshaller:使用 要绑定的类

我读到JAXBContext是线程安全的。因此,似乎该部分可以改进,并且仅使用一个实例

我正在使用这个阅读器:

public class MultiResourceXmlImportReader<T> extends MultiResourceItemReader<T> {

    public MultiResourceXmlImportReader(FileTypeEnum fileType, Resource... resources)  {
        super();
        setResources(resources);
        setDelegate(new XmlImportReader(fileType.getRootElementName(), fileType.getXmlEntityClass()));
    }
}
公共类MultiResourceXmlImportReader扩展了MultiResourceItemReader{
公共多资源XmlImportReader(文件类型枚举文件类型,资源…资源){
超级();
资源组(资源组);
setDelegate(新的XmlImportReader(fileType.getRootElementName(),fileType.getXmlEntityClass());
}
}
使用此ResourceAwareItemReaderItemStream:

public class XmlImportReader<T> extends StaxEventItemReader<T> {

    public XmlImportReader(String rootElementName, Class<T> modelClass) {
        setFragmentRootElementName(rootElementName);

        Jaxb2Marshaller itemMarshaller = new Jaxb2Marshaller();
        itemMarshaller.setClassesToBeBound(modelClass);
        setUnmarshaller(itemMarshaller);
    }

    public XmlImportReader(String rootElementName, Class<T> modelClass, Resource resource) {
        this(rootElementName, modelClass);
        setResource(resource);
    }

}
公共类XmlImportReader扩展了StateEventItemReader{
公共XmlImportReader(字符串rootElementName,类modelClass){
setFragmentRootElementName(rootElementName);
Jaxb2Marshaller itemmashaller=新的Jaxb2Marshaller();
itemMarshaller.setClassesToBeBound(modelClass);
setUnmarshaller(itemMarshaller);
}
公共XmlImportReader(字符串rootElementName、类modelClass、资源){
这(rootElementName,modelClass);
setResource(资源);
}
}

是否只需要使用1个安装版的JAXBContext?

StateVentitemReader不是线程安全的。我只建议将它设置为
步骤
的作用域。我的问题是,是否可以在多个StateEventItemReader之间设置和共享JAXBContext
StateEventItemReader
不是线程安全的。我只建议将它设置为
步骤
的作用域。我的问题是,是否可以在多个StatxeventemReader之间设置和共享JAXBContext