Кеш JAXBContext в многомодульном проекте maven - PullRequest
1 голос
/ 08 мая 2020

Спецификация JAXB утверждает, что контекст JAXB является потокобезопасным. Поскольку его создание занимает много времени, рекомендуется создавать / инициализировать его только один раз. Как это правильно сделать в многомодульном проекте maven? Передача классов в качестве аргументов, вероятно, приведет к некоторым зависимостям cycli c, передача строк в виде имен пакетов кажется утомительной и подверженной ошибкам. Есть ли какой-нибудь рекомендуемый способ сделать это?

1 Ответ

1 голос
/ 10 мая 2020

Вместо того, чтобы отображать классы JAXB в каждом модуле, сгруппируйте их в схему или jaxb или api модуль (или любое другое имя, которое больше всего подходит). В этом модуле вы можете поместить фабрику для получения экземпляра JAXBContext.

Если вы не хотите смешивать сопоставленные классы в одном модуле, для каждого модуля, использующего JAXB, извлеките сопоставленные классы в другой модуль. Например, если у вас есть moduleA, moduleB, moduleC, извлеките сопоставленные классы JAXB в moduleA-schema, moduleB-schema, moduleC-schema. Таким образом, вы можете поместить фабрику для экземпляра JAXBContext в служебный модуль, который зависит от moduleA-schema, moduleB-schema, moduleC-schema, но не от исходных модулей, чтобы избежать зависимостей cycli c.

...