powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Структура крупного приложения
5 сообщений из 5, страница 1 из 1
Структура крупного приложения
    #38548554
SkyFire
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день,

изучаю джаву совсем не долго (около года) и сейчас поставил перед собой задачу - потихоньку перенести(а заодно и изучить новые технологии) разработанное ранее корпоративное веб-приложение(php, веб, генерация отчётности, оналайн статистика и т д) на Spring, Spting-mvc, Hibernate и т д .
У меня возникла проблема с пониманием организации структуры такого приложения. В данный момент оно написано на php с использованием Yii фреймворка, где есть очень удобное разделение на модули, т.е. есть отдельный модуль например для Смс-информирования сотрудников, модуль тикетной системы, модуль управления пользователями(Rbac, ldap) и т д. Выглядит это примерно следующим образом:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
+projects
|   \---controllers
|   \---models
|   \---views
+---modules
|   \---noticeModule
|   	\---controllers
|       \---models
|       \---views
|   \---adminModule
|   	\---controllers
|       \---models
|       \---views
|   \---ЛюбойДругойМодуль
|   	\---controllers
|       \---models
|       \---views

Т.е. в корне проекта присутствуют общие модели которые может использовать любой модуль, а также существуют модели и логика под конкретный модуль.

Вопрос в следующем - как обычно джависты организовывают сложные(растущие) проекты?
В данный момент структура моего Spring-mvc приложения выглядит следующим образом:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
+---src
|   \---main
|       \---java
|           \---com.example
|               \---model
|               \---repository
|               \---service
|               \---web
|	\---resources
+---projects
|   \---logging
+---webapp
|   \---WEB-INF
|       \---views

Но как мне кажется укладывать в web\ абсолютно все контроллеры кучей, а в service\ абсолютно все сервисы - не совсем удобно для большого (в перспективе) проекта. Хотелось бы больше струтурированности. В интернете встречал упоминания модульности WAR архивов (несколько JAR в одном WAR), модульности через Maven. Но как-то конкретики не попадалось. Буду рад любой ссылке\ответу.
...
Рейтинг: 0 / 0
Структура крупного приложения
    #38548567
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы совершенно точно заместили что раскладывать файлы по слоям это ошибка.
http://www.javapractices.com/topic/TopicAction.do?Id=205
Слои растут с каждой новой "фичей". Отдельным классам одного слоя нужно гораздо меньше связей, чем классам разных слоёв, но обслуживающим одну и ту же функциональность.

jar\war это модули более высокого уровня. Если между ними сильные связи, то разбивать на модули, без особой причины смысла нет.
Поэтому отдельные jee модули обычно связаны слабо и разделение на модули вызвано явными требованиями к проекту. Например Клиент-Сервер-Общий код.
...
Рейтинг: 0 / 0
Структура крупного приложения
    #38548650
SkyFire
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Отличная статья, спасибо, то что нужно! :) Остаётся только вопрос - что делать с классами которые могут использоваться разными модулями. Я понимаю что нарушается принцип модульности, но на практике он тяжело достигается (не дублировать же код). Но кажется здесь единственное решение вынести их например в пакет common.
...
Рейтинг: 0 / 0
Структура крупного приложения
    #38548659
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SkyFireОтличная статья, спасибо, то что нужно! :) Остаётся только вопрос - что делать с классами которые могут использоваться разными модулями. Я понимаю что нарушается принцип модульности, но на практике он тяжело достигается (не дублировать же код). Но кажется здесь единственное решение вынести их например в пакет common.
Ничего обычного. Отдельные фичи и модули, точно так же как и классы могут переиспользовать общий код, который инкапсулируется в некотором общем модуле. Важно чтобы в этом модуле небыло вообще всего общего кода. А были конкретные переиспользуемые модули. То есть подход такой же как и при дизайне отдельных классов. SRP и всё такое.
...
Рейтинг: 0 / 0
Структура крупного приложения
    #38552071
eJack
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SkyFireОтличная статья, спасибо, то что нужно! :) Остаётся только вопрос - что делать с классами которые могут использоваться разными модулями. Я понимаю что нарушается принцип модульности, но на практике он тяжело достигается (не дублировать же код). Но кажется здесь единственное решение вынести их например в пакет common.
если пользуетесь maven'ом, посмотрите на Multiple Module Projects . Это правда уже больше не к идеологии, а к средствам.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Структура крупного приложения
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]