多模块maven项目中的JAXBContext缓存
JAXBContext cache in multi-module maven project
JAXB 规范声明 JAXB 上下文是线程安全的。因为它的创建很耗时,所以建议只 create/initialize 它一次。如何在多模块 Maven 项目中正确执行?将 类 作为参数传递可能会引入一些循环依赖,将字符串作为包名传递似乎乏味且容易出错。有什么推荐的方法吗?
与其在每个模块中映射 JAXB 类,不如将它们分组到 schema 或 jaxb 或 api 模块(或任何最适合的名称)。在该模块中,您可以让工厂获取 JAXBContext 实例。
如果您不想在同一个模块中混合映射 类,对于使用 JAXB 的每个模块,将映射 类 提取到另一个模块。例如,如果您有 moduleA
、moduleB
、moduleC
,提取 JAXB 映射 类 到 moduleA-schema
、moduleB-schema
、moduleC-schema
.这样您就可以将 JAXBContext 实例的工厂放在一个实用程序模块中,该模块依赖于 moduleA-schema
、moduleB-schema
、moduleC-schema
,但不依赖于原始模块,因此您可以避免循环依赖。
JAXB 规范声明 JAXB 上下文是线程安全的。因为它的创建很耗时,所以建议只 create/initialize 它一次。如何在多模块 Maven 项目中正确执行?将 类 作为参数传递可能会引入一些循环依赖,将字符串作为包名传递似乎乏味且容易出错。有什么推荐的方法吗?
与其在每个模块中映射 JAXB 类,不如将它们分组到 schema 或 jaxb 或 api 模块(或任何最适合的名称)。在该模块中,您可以让工厂获取 JAXBContext 实例。
如果您不想在同一个模块中混合映射 类,对于使用 JAXB 的每个模块,将映射 类 提取到另一个模块。例如,如果您有 moduleA
、moduleB
、moduleC
,提取 JAXB 映射 类 到 moduleA-schema
、moduleB-schema
、moduleC-schema
.这样您就可以将 JAXBContext 实例的工厂放在一个实用程序模块中,该模块依赖于 moduleA-schema
、moduleB-schema
、moduleC-schema
,但不依赖于原始模块,因此您可以避免循环依赖。