我有一个非常传统的经典Spring Web应用程序,它作为多Maven模块项目提供RESTful服务。
我发现了很多很棒的网站,并且有一些很好的例子。我可以做一些工作,但这并不意味着这是一种标准方法。所以,我在这里问的原因是对于RESTful应用程序应该使用什么标准的Spring Boot。我使用的布局是正常的还是标准的,还是发疯了? Spring Boot多Maven模块的正常标准布局是什么?
让我对此进行说明:
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如何拉出具有dao-module.jar和service-module.jar以及实体-module.jar的service-module.jar,不喜欢。
您可以看到“ myapp-ws-context.xml”已导入“ myapp-service-context.xml”,而后者又导入了“ myapp-dao-context.xml”,而拳头又导入了拳头“ myapp-entity-context.xml”。有些人可能会喜欢,而其他人可能会觉得这是可憎的。
如果我编译模块,我会按此顺序说:
实体,dao,服务,ws
然后一切都可以正确编译,并且所有单元测试都可以正确运行,并且该应用程序运行良好!这是我多年来提出的系统,它看起来与我现在看到的任何Spring应用程序非常相似。
所有这些都已布置好,我正在研究创建多Maven模块Spring Boot应用程序的“标准”方式。所以,这是我所知道的,这是我有疑问的地方:
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.
使用此布局,将按以下顺序设置模块: 应用程序,实体,dao,服务,ws
有人喜欢这种结构吗?你讨厌吗您对我应该如何做有建议?一位同事创建了一个完全不同的结构,这些结构具有相同的模块,只是顺序有所不同。
他的模块设置如下: 实体,dao,服务,ws和应用程序
在这种情况下,应用程序模块是具有Spring Boot Application主类的'FAT JAR'。然后pom.xml包括:实体,dao,服务,ws。 在他的案例中,dao确实包含实体。 服务不包括dao,而ws不包括服务。
这种布局的任何人都会做什么?
谢谢!