配置-将Spring应用程序转换为Spring Boot应用程序

时间:2018-11-20 15:59:01

标签: java maven spring-boot

我有一个非常传统的经典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不包括服务。

这种布局的任何人都会做什么?

谢谢!

0 个答案:

没有答案