多模块maven项目中的JAXBContext缓存

JAXBContext cache in multi-module maven project

JAXB 规范声明 JAXB 上下文是线程安全的。因为它的创建很耗时,所以建议只 create/initialize 它一次。如何在多模块 Maven 项目中正确执行?将 类 作为参数传递可能会引入一些循环依赖,将字符串作为包名传递似乎乏味且容易出错。有什么推荐的方法吗?

与其在每个模块中映射 JAXB 类,不如将它们分组到 schemajaxbapi 模块(或任何最适合的名称)。在该模块中,您可以让工厂获取 JAXBContext 实例。

如果您不想在同一个模块中混合映射 类,对于使用 JAXB 的每个模块,将映射 类 提取到另一个模块。例如,如果您有 moduleAmoduleBmoduleC,提取 JAXB 映射 类 到 moduleA-schemamoduleB-schemamoduleC-schema .这样您就可以将 JAXBContext 实例的工厂放在一个实用程序模块中,该模块依赖于 moduleA-schemamoduleB-schemamoduleC-schema,但不依赖于原始模块,因此您可以避免循环依赖。