springboot基于maven多模块项目搭建(直接启动webApplication)

盛年不重来,一日难再晨,及时当勉励,岁月不待人。这篇文章主要讲述springboot基于maven多模块项目搭建(直接启动webApplication)相关的知识,希望能为你提供帮助。
1. 新建maven项目springboot-module

springboot基于maven多模块项目搭建(直接启动webApplication)

文章图片

2.把src删掉,新建module项目
  • springboot-module-api
  • springboot-module-model
  • springboot-module-service
  • springboot-module-util
  • springboot-module-web
 
springboot基于maven多模块项目搭建(直接启动webApplication)

文章图片

3. 添加模块之间的依赖 3.1    springboot-module.pom
1 < ?xml version="1.0" encoding="UTF-8"?> 2 < project xmlns="http://maven.apache.org/POM/4.0.0" 3xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 5< modelVersion> 4.0.0< /modelVersion> 6 7< groupId> com.springboot.module< /groupId> 8< artifactId> springboot-module< /artifactId> 9< packaging> pom< /packaging> 10< version> 1.0-SNAPSHOT< /version> 11< modules> 12< module> springboot-module-api< /module> 13< module> springboot-module-model< /module> 14< module> springboot-module-service< /module> 15< module> springboot-module-util< /module> 16< module> springboot-module-web< /module> 17< /modules> 18 19< !-- Spring boot 父引用--> 20< parent> 21< groupId> org.springframework.boot< /groupId> 22< artifactId> spring-boot-starter-parent< /artifactId> 23< version> 1.4.1.RELEASE< /version> 24< /parent> 25< dependencies> 26< !-- Spring boot 核心web--> 27< dependency> 28< groupId> org.springframework.boot< /groupId> 29< artifactId> spring-boot-starter-web< /artifactId> 30< /dependency> 31< dependency> 32< groupId> org.projectlombok< /groupId> 33< artifactId> lombok< /artifactId> 34< version> 1.16.18< /version> 35< /dependency> 36< dependency> 37< groupId> org.springframework.boot< /groupId> 38< artifactId> spring-boot-starter-logging< /artifactId> 39< /dependency> 40< dependency> 41< groupId> org.springframework.boot< /groupId> 42< artifactId> spring-boot-starter-test< /artifactId> 43< /dependency> 44< /dependencies> 45 46< build> 47< plugins> 48< plugin> 49< groupId> org.springframework.boot< /groupId> 50< artifactId> spring-boot-maven-plugin< /artifactId> 51< executions> 52< execution> 53< goals> 54< goal> repackage< /goal> 55< /goals> 56< /execution> 57< /executions> 58< configuration> 59< executable> true< /executable> 60< /configuration> 61< /plugin> 62< /plugins> 63< /build> 64 < /project>

3.2  springboot-module-api.pom
1 < ?xml version="1.0" encoding="UTF-8"?> 2 < project xmlns="http://maven.apache.org/POM/4.0.0" 3xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 5< parent> 6< artifactId> springboot-module< /artifactId> 7< groupId> com.springboot.module< /groupId> 8< version> 1.0-SNAPSHOT< /version> 9< /parent> 10< modelVersion> 4.0.0< /modelVersion> 11< artifactId> springboot-module-api< /artifactId> 12 13< dependencies> 14< dependency> 15< groupId> com.springboot.module< /groupId> 16< artifactId> springboot-module-util< /artifactId> 17< version> 1.0-SNAPSHOT< /version> 18< scope> compile< /scope> 19< /dependency> 20< /dependencies> 21 < /project>

3.3    springboot-module-model.pom
1 < ?xml version="1.0" encoding="UTF-8"?> 2 < project xmlns="http://maven.apache.org/POM/4.0.0" 3xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 5< parent> 6< artifactId> springboot-module< /artifactId> 7< groupId> com.springboot.module< /groupId> 8< version> 1.0-SNAPSHOT< /version> 9< /parent> 10< modelVersion> 4.0.0< /modelVersion> 11< artifactId> springboot-module-model< /artifactId> 12 13< dependencies> 14< dependency> 15< groupId> org.springframework.boot< /groupId> 16< artifactId> spring-boot-starter-data-jpa< /artifactId> 17< /dependency> 18< dependency> 19< groupId> mysql< /groupId> 20< artifactId> mysql-connector-java< /artifactId> 21< /dependency> 22< dependency> 23< groupId> com.springboot.module< /groupId> 24< artifactId> springboot-module-util< /artifactId> 25< version> 1.0-SNAPSHOT< /version> 26< scope> compile< /scope> 27< /dependency> 28< /dependencies> 29 30 < /project>

3.4    springboot-module-service.pom
1 < ?xml version="1.0" encoding="UTF-8"?> 2 < project xmlns="http://maven.apache.org/POM/4.0.0" 3xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 5< parent> 6< artifactId> springboot-module< /artifactId> 7< groupId> com.springboot.module< /groupId> 8< version> 1.0-SNAPSHOT< /version> 9< /parent> 10< modelVersion> 4.0.0< /modelVersion> 11< artifactId> springboot-module-service< /artifactId> 12 13< dependencies> 14< dependency> 15< groupId> com.springboot.module< /groupId> 16< artifactId> springboot-module-model< /artifactId> 17< version> 1.0-SNAPSHOT< /version> 18< /dependency> 19< dependency> 20< groupId> com.springboot.module< /groupId> 21< artifactId> springboot-module-api< /artifactId> 22< version> 1.0-SNAPSHOT< /version> 23< /dependency> 24< dependency> 25< groupId> ma.glasnost.orika< /groupId> 26< artifactId> orika-core< /artifactId> 27< version> 1.5.1< /version> 28< /dependency> 29< dependency> 30< groupId> org.apache.commons< /groupId> 31< artifactId> commons-lang3< /artifactId> 32< version> 3.5< /version> 33< /dependency> 34< /dependencies> 35 < /project>

3.5    springboot-module-util.pom
1 < ?xml version="1.0" encoding="UTF-8"?> 2 < project xmlns="http://maven.apache.org/POM/4.0.0" 3xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 5< parent> 6< artifactId> springboot-module< /artifactId> 7< groupId> com.springboot.module< /groupId> 8< version> 1.0-SNAPSHOT< /version> 9< /parent> 10< modelVersion> 4.0.0< /modelVersion> 11< artifactId> springboot-module-util< /artifactId> 12 13< dependencies> 14< dependency> 15< groupId> org.springframework.boot< /groupId> 16< artifactId> spring-boot-starter-data-jpa< /artifactId> 17< /dependency> 18< /dependencies> 19 < /project>

3.6    springboot-module-web.pom
1 < ?xml version="1.0" encoding="UTF-8"?> 2 < project xmlns="http://maven.apache.org/POM/4.0.0" 3xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 5< parent> 6< artifactId> springboot-module< /artifactId> 7< groupId> com.springboot.module< /groupId> 8< version> 1.0-SNAPSHOT< /version> 9< /parent> 10< modelVersion> 4.0.0< /modelVersion> 11< artifactId> springboot-module-web< /artifactId> 12 13< dependencies> 14< dependency> 15< groupId> com.springboot.module< /groupId> 16< artifactId> springboot-module-service< /artifactId> 17< version> 1.0-SNAPSHOT< /version> 18< /dependency> 19< /dependencies> 20 < /project>

4.  模块依赖关系图【springboot基于maven多模块项目搭建(直接启动webApplication)】 
springboot基于maven多模块项目搭建(直接启动webApplication)

文章图片

5.  层说明  springboot-module-api      ——业务逻辑接口
  springboot-module-model ——实体类
  springboot-module-service ——数据访问层,业务逻辑层的实现
  springboot-module-util      ——工具模块
  springboot-module-web      ——表现层
6.  包名设计包名推荐以groupId为开头定义,所有模块的包名结构统一规范,比如groupId是com.springboot.module,而所有模块包名都以com.springboot.module开头,其中web层的WebApplication需要放在com.springboot.module下,不能放在com.springboot.module.web或者com.springboot.module.controller下。推荐使用下面的第一种情况。
6.1. 包名以groupId开头,注意WebApplication.java的位置,必须放在com.springboot.module包下,不能放在com.springboot.module.controller或者com.springboot.module.web包下
 
springboot基于maven多模块项目搭建(直接启动webApplication)

文章图片
springboot基于maven多模块项目搭建(直接启动webApplication)

文章图片
springboot基于maven多模块项目搭建(直接启动webApplication)

文章图片
springboot基于maven多模块项目搭建(直接启动webApplication)

文章图片

6.2. 包名以groupId开头,web层WebApplication.java放在了com.springboot.module.web下。
 
springboot基于maven多模块项目搭建(直接启动webApplication)

文章图片
springboot基于maven多模块项目搭建(直接启动webApplication)

文章图片
springboot基于maven多模块项目搭建(直接启动webApplication)

文章图片

启动WebApplication.java会报如下错误
springboot基于maven多模块项目搭建(直接启动webApplication)

文章图片

6.2.1. 解决方法:
1)        第一步:在WebApplication中加入
1 @ComponentScan(basePackages = {"com.springboot.module"})不是@ComponentScan(basePackages = {"com.springboot.module.*"})

springboot基于maven多模块项目搭建(直接启动webApplication)

文章图片
1)        第二步,在springboot-module-service模块中添加ServiceApplication.java类,
springboot基于maven多模块项目搭建(直接启动webApplication)

文章图片
springboot基于maven多模块项目搭建(直接启动webApplication)

文章图片

6.2.2. 包名不以groupId开头,其他和第一种情况一样也是可以的。但最好推荐是以groupId为开头的
7.只有 web层有application.properties
1 server.port=8086 2 server.servlet-path=/ 3 spring.resources.static-locations=classpath:/static/,classpath:/templates/ 4 spring.mvc.view.suffix=.html 5 6 #配置数据源 7 spring.datasource.driver-class-name=com.mysql.jdbc.Driver 8 spring.datasource.url=jdbc:mysql://localhost:3306/springboot-module 9 spring.datasource.username=root 10 spring.datasource.password=root 11 spring.jpa.hibernate.ddl-auto=update 12 spring.jpa.show-sql=true 13 14 #在控制台输出彩色日志 15 spring.output.ansi.enabled=always

 

    推荐阅读