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

Я начинаю проект Spring, который должен состоять из четырех основных модулей:

  1. Основной модуль — имеет уровень сервиса и репозитория (должен представлять общую библиотеку для других модулей)
  2. Административный модуль — должен содержать собственную конфигурацию безопасности и конечные точки (Контроллеры)
  3. Модуль клиента — должен содержать другую конфигурацию безопасности и контроллеры.
  4. ?Веб-модуль — содержит приложение SpringBootApplication, которое должно запускать как модуль администратора, так и модуль клиента.

Возможно ли это или я должен разделить проект на два проекта Spring Boot с общей библиотекой? Могу ли я настроить сборку, в которой модули администратора и клиента построены как файлы .war, и запустить ее с помощью SpringBootApplication в веб-модуле?

Модули клиента и администратора не обязательно должны находиться на одном и том же порту. Единственное, что важно, это запустить его в одно и то же время.

Ниже представлена ​​структура моего текущего проекта.

/project-root
   -pom.xml (pom packaging defined; modules: core, web-admin, web-customer)
   /core 
     -src (contains service and repository classes)
     -pom.xml (jar packaging)
   /web-admin
     -src (contains controllers and security configuration for admin portal)
     -pom.xml (jar packaging for now; dependency on core)
   /web-customer
     -src (contains controllers and security configuration for customers)
     -pom.xml (jar for now; dependency on core)
   /web
     -src (should contain SpringBootApplication to run all the modules)

Это может помочь: baeldung.com/maven-мультимодуль

priyank-sriv 26.04.2019 10:38
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
1
189
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Конечно, это возможно. Вам просто нужно обратить внимание на пару вещей:

  1. Ваш веб-модуль должен включать все остальные модули в качестве зависимостей;
  2. Класс SpringBootApplication должен быть в пакете верхнего уровня, иначе вам придется немного поиграть с атрибутом baseScanPackages;

Например:

   /core 
     com.example.app.core      <--- All the core classes would be on this package
   /web-admin
     com.example.app.admin     <--- All the admin classes would be on this package
   /web-customer
     com.example.app.customer  <--- All the customer classes would be on this package
   /web
     com.example.app           <--- The SpringBootApplication class should be at this level

Can I maybe configure a build in which Admin and Customer modules are built as .war files and run it with SpringBootApplication in Web module?

Вам не нужно упаковывать модуль администратора и клиента в виде war файлов, jar упаковка идеальна.

Customer and Admin modules don't have to be on the same port.

Это жесткое требование? Если да, то вам лучше написать 2 разных приложения. В противном случае ко всем API можно получить доступ через один и тот же порт.

Ну, я просто забыл добавить зависимости от модулей администратора и клиента в основной модуль с SpringBootApplication - большое спасибо!

K. Stef 26.04.2019 12:27

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