Sprint Boot в многомодульном проекте

В нашей команде мы немного обсуждаем, разрабатывая довольно простое приложение Spring Boot. Поскольку мы хотели четко разделить проблемы, мы разделили нашу систему (модули Maven) на три модуля:

  • Услуга: имеет зависимость Spring Boot, зависит от Модель & Репозиторий
  • Модель: имеет только классы домена и классы обслуживания (зависимость нет Spring Boot)
  • Репозиторий: имеет только логику доступа JDBC (зависит от зависимости Модель, нет Spring Boot)

Раньше я реализовал несколько проектов Spring Boot и впервые настроил его таким образом. У меня есть особые опасения по поводу того, имеет ли смысл держать Spring Boot вне репозитория, потому что это потребует от нас выполнения большого количества проводок, таких как JDBC, jooq, liquibase и т. д., Вручную в Service.

Есть ли у кого-нибудь совет, имеет ли смысл так делать?

что вы имеете в виду под (no Spring Boot dependency)?

Deadpool 01.10.2018 16:58

Я имею в виду, что в модуле Repository нет зависимости от какой-либо библиотеки Spring Boot, только напрямую от postgres / jooq.

Dominiek 01.10.2018 17:11
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
2
117
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

I have particular concerns as to whether it makes sense to keep Spring Boot out of Repository because it will require us to do a lot of the wiring, like JDBC, jooq, liquibase, etc. manually in Service.

Если вы правильно используете фреймворки TDD, это не должно быть проблемой. Я уже работаю над многомодульными проектами Maven (Spring Boot), и у меня никогда не было проблем с этим, но, очевидно, это зависит от того, что вы делаете в своих проектах.

Спасибо за Ваш ответ. У меня проблемы с пониманием последнего абзаца. Я хотел сказать, что инъекция, о которой обычно заботится Spring, должна выполняться вручную в коде в проекте Service, потому что он не может полагаться на аннотации, сканирование компонентов, поскольку нет зависимости Spring в репозитории. Я не понимаю, почему вы поднимаете здесь TDD, я полагаю, потому что там есть похожая проблема с подключением?

Dominiek 01.10.2018 17:16

Да, есть проблема с подключением. Правильная настройка родительского pom.xml позволит вам выполнить инъекцию во все ваши подмодули. Одно предупреждение: это может быть легко или сложно, в зависимости от того, что вам нужно делать в своем проекте. На этом уровне абстракции очень сложно дать более точный ответ.

Lorelorelore 01.10.2018 17:21

Другие вопросы по теме