У меня есть довольно традиционное классическое веб-приложение Spring, которое обслуживает службы RESTful в виде проекта с несколькими модулями.
Есть много отличных веб-сайтов, которые я нашел, и у некоторых есть хорошие примеры.Я могу заставить что-то работать, но это не значит, что это стандартный подход.Итак, причина, по которой я спрашиваю здесь, заключается в том, каким должен быть стандартный Spring Boot для приложения RESTful.Является ли макет, который я использую, довольно нормальным и / или стандартным, или это безумие.Какова стандартная стандартная схема для модуля Multi-Maven Spring Boot.
Позвольте мне изложить это:
parent-maven-project
pom.xml - repos, properties, modules
entity-module - translates to JAR, all hibernate entities
myapp-entity-context.xml - beans for mostly the dbconn/session/trx
pom.xml - points to parent-maven-project has dependencies
dao-module - translates to jar, all db CRUD and unit tests
- imports entity-module.jar
myapp-dao-context.xml
this xml imports myapp-entity-context.xml
also has any other bean definitions needed for this module
pom.xml - points to parent-maven-project has dependencies
service-module - translates to jar, contains business logic
- imports dao-module.jar
myapp-service-context.xml
this xml imports myapp-dao-context.xml
also has any other bean definitions needed for this module
pom.xml - points to parent-maven-project has dependencies
ws-module - translates to war, contains RESTful endpoints
- imports service-module.jar
myapp-ws-context.xml
this xml imports myapp-service-context.xml
also has any other bean definitions needed for this module
pom.xml - points to parent-maven-project has dependencies
webapp
WEB-INF
spring-security.xml
springmvc-serlet.xml
web.xml
Некоторым людям может понравиться то, что я сделал, выделив модули,и увидеть, как WAR тянет service-module.jar, в котором есть dao-module.jar, в котором есть entity-module.jar, а некоторым это может не понравиться.
Вы можете увидеть «myapp-ws-context.xml импортировал «myapp-service-context.xml», который, в свою очередь, импортировал «myapp-dao-context.xml», который, в свою очередь, импортировал первый «myapp-entity-context.xml».Кому-то это может понравиться, а кому-то может показаться, что это мерзость.
Я скажу, что в таком порядке, если я скомпилирую свои модули:
entity, dao, service, ws затем всеправильно компилируется, все модульные тесты работают правильно, и приложение работает отлично!Это система, которую я разрабатывал на протяжении многих лет, и она очень похожа на любые приложения Spring, которые я вижу сейчас.
Учитывая все это, я смотрю на «стандартный» способсоздание многопользовательского модуля Spring Boot app.Итак, вот что я знаю, и вот что у меня есть вопросы:
1) Я знаю, что все файлы myapp-xxx-context.xml должны быть преобразованы в классы Java Config
2) Я думаю, что spring-secutity.xml, web.xml и springmvc-servlet также могут быть преобразованы в классы Java Config ?????Насколько я знаю, эти три xml-файла можно поместить в один класс Java Config.
Общая причина для модулей состоит в том, что я действительно хочу инкапсулировать то, что мне нужно для этих модулей, в зависимости pom.xml, ив контекстных файлах приложения Spring.
Вот макет, который, как мне кажется, мне понадобится.
parent-maven-project
pom.xml - repos, properties, modules
- parent is spring boot start project
app-module - Beginning Spring Boot App, translates to jar
pom.xml - points to parent-maven-project has dependencies
src/main/java/com/myapp/AppConfiguration.java
entity-module - translates to JAR, all hibernate entities
pom.xml - points to parent-maven-project has dependencies
src/main/java/com/myapp/EntityConfiguration.java
- @Import AppConfiguration.java
dao-module - translates to jar, all db CRUD and unit tests
- imports entity-module.jar
pom.xml - points to parent-maven-project has dependencies
src/main/java/com/myapp/DaoConfiguration.java
- @Import EntityConfiguration.java
service-module - translates to jar, contains business logic
- imports dao-module.jar
pom.xml - points to parent-maven-project has dependencies
src/main/java/com/myapp/ServiceConfiguration.java
- @Import DaoConfiguration.java
ws-module - translates to war, contains RESTful endpoints
- imports service-module.jar
pom.xml - points to parent-maven-project has dependencies
src/main/java/com/myapp/WebServiceConfiguration.java
- @Import ServiceConfiguration.java
- web.xml, spring-security.xml, and springmvc-servlet.mvc are pulled into this 'WebServiceConfiguration' java class.
С этим макетом модули настраиваются в следующем порядке: приложение, объект, дао, сервис, ws
Кому-нибудь нравится эта структура?Ты ненавидишь это?У вас есть предложения, как мне это сделать?Сотрудник создал совершенно другую структуру, в которой есть те же модули, за исключением того, что порядок немного отличается.
Он имеет следующие настройки модулей: entity, dao, service, ws и app
В этом случае модуль приложения представляет собой «FAT JAR», который имеет основной класс Spring Boot Application.Затем pom.xml включает в себя: entity, dao, service, ws.В его случае дао включает сущности.Сервисы не включают dao, и ws не включает сервисы.
Что кто-нибудь из этого макета?
Спасибо!