Страницы

Поиск по вопросам

пятница, 24 января 2020 г.

Spring RESTful + hibernate многомодульный проект

#java #spring #hibernate #rest


Вопрос следующий!
Мне необходимо создать приложение, состоящее из нескольких модулей: 


authorization (модуль авторизации) 
main (основной модуль) 
directories (модуль со справочниками)
logging (модуль логирования)


В дальнейшем могут быть и другие модули. Каждый модуль представляет собой автономное
Spring Restful + hibernate приложение (war файлик). 

Модули должны взаимодействовать друг с другом. То есть, допустим, модуль main использует
справочники из модуля directories. 

Вопрос такой, какая существует практика взаимодействия между такими автономными модулями?
 Могу предположить, что модули общаются посредством rest запросов, но, тогда если,
допустим, мне потребуется получить в модуле main справочник городов city (из модуля
dictionaries), то мне в модуле main придется хранить класс-сущность City и так со всеми
сущностями.
    


Ответы

Ответ 1



Если Вы используете maven, опишите данные модули в pom файлах, кто от кого зависит при сборке и т.д. и используйте справочники из City при работе в main. Например основной pom.xml : 4.0.0 ru.group.example example-parent 0.1.0 pom example parent UTF-8 UTF-8 ... example-module1 example-module2 example-module3 org.apache.maven.wagon wagon-ssh-external org.apache.maven.wagon wagon-ssh org.apache.maven.plugins maven-compiler-plugin 1.8 1.8 Затем файл pom.xml например module1 : ru.group.example example-parent 0.1.0 4.0.0 example-module1 war ru.group.example example-module2 ${project.version} module2, по аналогии с первым, у них будет общий перент и свои зависимости. Ну а дальше уже в коде импортируйтесь и используйте, свои классы методы и т.д.

Ответ 2



Если у вас несколько сервисов, то при rest комуникации им следует передавать не саму Entity -> City, а DTO -> CityDTO, это помогает избежать проблем с сериализацией. Наглядный пример различия DTO, POCO (POJO) и Value Object Создайте модуль "common", в котором будут находиться DTO, в том числе и CityDTO, а зетем добавьте на него зависимость модулям "main" (основной модуль) и "directories" (модуль со справочниками).

Комментариев нет:

Отправить комментарий