2014-02-16 2 views
1

Я пишу веб-приложение java, используя spring, hibernate и mysql. Приложения становятся все больше, поэтому я хочу разбить его на более мелкие части, например. меньшие проекты, компоненты или которые когда-либо возможно. Например, у меня есть функция загрузки и загрузки изображений, я не хочу, чтобы оба они были в одной базе кода или проекте. Я хочу иметь возможность использовать их отдельно, как отдельные сервисы, независимо друг от друга. Есть ли способ сделать это, например. конвертировать функциональность загрузки изображений в банку, а затем ссылаться на эту банку в реальном проекте? Как распределяются проекты Enterprise?Как вы разбиваете большое приложение java на компоненты?

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

заранее спасибо

+0

Маленький наконечник, всегда следуйте единому принципу ответственности http://en.wikipedia.org/wiki/Single_responsibility_principle –

ответ

1

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

Попробуйте прочитать OSGi in Action Richard S. Hall, Karl Pauls, Stuart McCulloch и David Savage, чтобы получить представление об этой технологии.

OSGi - это модульный подход для разработки программного обеспечения Java, который обеспечивает создание слабосвязанных сервисов. Цитата из сайта альянса OSGi:

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

Hibernate поддерживает OSGi, как можно видеть here. Что касается реализации OSGi, я бы рекомендовал Equinox, но существует много других допустимых реализаций OSGi. Поскольку ваш проект является веб-приложением, вы можете также проверить Virgo

Дева из EclipseRT является полностью модуль на основе сервера приложений Java, который предназначен для запуска предприятия Java-приложений и пружинные питанием приложений с высокой степенью гибкости и надежности

и, в частности,

поддерживает ванильные WAR файлы со всеми их зависимостей в WEB-INF/Lib, и мы б Применение Пучки, что импортировать их зависимости с помощью OSGi манифеста метаданных, с помощью эталонной реализации спецификации OSGi веб-контейнера, на основе встроенного Apache Tomcat и конфигурируется с использованием стандартного Tomcat server.xml

0

Я закончил с использованием Maven модулей и возможности управления зависимостями maven. Я создал отдельный проект maven и продолжал добавлять модули maven по мере необходимости, например. создал модуль для загрузки изображений, один модуль для общих библиотек и т. д. Каждый из этих модулей затем упаковывается в файлы jar. Затем я импортирую каждый из этих файлов jar с использованием зависимости maven к моему основному веб-проекту.

Кажется, что он отлично работал до сих пор. Надеюсь, это полезно и для кого-то другого.

Смежные вопросы