Как решить круговые зависимости между JAR-файлами? - PullRequest
4 голосов
/ 07 сентября 2011

Я работаю над большим проектом с большим количеством JAR-файлов и, конечно, никакой документации не существует !!: (

Чтобы гарантировать отсутствие утечки памяти в приложении, я использовал JBoss Tattletale для проверки циклических зависимостей между Jar-файлами, и, к сожалению, я нашел много.

Подскажите, пожалуйста, как решить круговые зависимости между JAR-файлами?

Заранее спасибо.

Ответы [ 3 ]

3 голосов
/ 07 сентября 2011

Вы можете разбить зависимости с помощью инверсии зависимости . Чтобы избежать и разрешить циклические зависимости, это помогает спроектировать многоуровневую архитектуру.

Тем не менее, циклические зависимости не вызывают утечку памяти. Но нарушение круговых зависимостей имеет много положительных эффектов, в основном модульность. Это не только повышает гибкость, но также помогает в проверке и решении проблем, включая утечки памяти.

Если вы не разбиваете циклически зависимые пакеты, они ведут себя очень похоже на один большой монолитный пакет!

1 голос
/ 07 сентября 2011

Помимо использования интерфейсов, вы часто можете вносить структурные улучшения, перемещая классы между jar-файлами / пакетами. Разделение толстых классов с тем, чтобы общие обязанности можно было легко сгруппировать вместе, может помочь в этом процессе. Есть несколько коммерческих инструментов визуализации / реструктуризации, чтобы помочь с этим.

0 голосов
/ 07 сентября 2011

Если под memory leakage вы подразумеваете more memory than necessary is consumed или my jar(s) is(are) too fat, то, возможно, вы захотите исследовать Proguard .

Я создаю большие проекты maven, со многими зависимостями от многих библиотек, которые сами имеют зависимости от других библиотек.Однако я не использую весь код во всех библиотеках.Proguard в основном помогает мне обрезать и удалять весь ненужный код.

Это действительно чистый инструмент, выполняющий эту работу за меня.Я создаю огромную толстую банку со всеми моими зависимостями, настраиваю точки входа в своем коде, а затем он сжимает все.

...