springboot多模块项目搭建
创建maven父工程
注意:创建父模块选用Spring Initializr的方式创建,让父模块继承springboot的maven配置,之后的所有子模块都通过maven的方式创建,子模块继承父模块就会间接继承springboot相关的配置,web,api模块再另外添加spring-boot-starter-web,spring-boot-starter-tomcat相关的依赖。网上有很多教程父模块都是通过maven的方式创建的,然后子模块是通过Spring Initalizr方式创建,这种方式父模块无法管理子模块的依赖仲裁,需要每个子模块自行管理,就失去了父模块的用处了。
- idea -> file -> new -> project,选择Spring Initializr,点击next
- 填写相关的Group,Artifact,Version,点击next
- 根据需要选取初始化需要加载的依赖,父工程不需要添加,直接点解next
- 设置项目名称和保存路径,点击finish
- 删除生成后的src目录,pom.xml中添加pom属性
创建子模块
使用maven方式创建api,biz,core,model,dao,integration,common相关模块,创建内部依赖模块是使用maven的方式创建,便于总模块管理子模块的依赖仲裁;
点击项目根目录,右键 new -> module,选用maven的方式新建模块,分别添加api,biz,core,model,dao,integration,common这些模块。直接点击next
输入ArtifactId,点击next
设置模块名称和路径,点击finish
创建web模块
web模块可以采用Spring Initializr的方式创建,可以自动初始化web相关的pom包和springboot的启动类,之后再修改web模块的pom文件的标签为当前父工程的配置即可;
点击项目根目录,右键 new -> module,选用Spring Initializr的方式新建web模块,直接点击Next
填写相关的Group,Artifact,Version,点击next
勾选所需的web依赖,点击Next
最后点击Finish完成模块创建
创建完之后的工程目录结构如图:
修改web模块的pom文件的,将spring-boot-starter-parent 替换为父工程的pom配置即可
在父工程的pom文件中新增web模块的module依赖
最后修改总pom和子模块的pom.xml文件,增加每个模块间的依赖关系;
多模块启动配置文件管理
多模块化后,想让每个模块的配置文件独立管理,整合的时候再合并各个不同的模块的配置,需要先在每个模块下面创建一个配置文件,文件的命名格式必须是application-xxx.yml,启动层模块想引用下层模块的配置时需要在配置文件中添加spring.profiles.include: xxx 或者spring.profiles.active: xxx (xxx为子模块配置文件的后缀标识名)配置项显示引用所需要的配置文件。注意启动层模块的配置文件名必须是application.yml或者application.properties,不能带上-xxx的后缀,不然导致spring.profiles.active的配置失效,从而无法加载子模块的配置。例如启动层是web层,web层的配置文件命名为application.yml,如果命名是application-web.yml会导致子模块的配置无法加载。
ConfigFileApplicationListener 子模块配置加载类源码说明如下,默认是从加载application.properties或application.yml这两个配置文件中加载其它配置文件的配置,所以启动层模块的配置文件名必须是application.properties或application.yml。
首次推送项目到远程仓库
首次推送本地新建工程到远程仓库需要将本地Git仓库和远程仓库建立关联,不同场景下的Git命令如下:
Git global setup
git config --global user.name "Administrator"
git config --global user.email "admin@example.com"
Create a new repository
git clone http://10.0.27.135:7777/insigma-traffic/annotator.git
cd annotator
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master
Existing folder
cd existing_folder
git init
# 本地仓库和远程仓库建立关联关系
git remote add origin http://10.0.27.135:7777/insigma-traffic/annotator.git
git add .
git commit -m "Initial commit"
# 如果首次提交新建的本地仓库和新建的远程仓库提交的历史记录不一致,需要加上--allow-unrelated-histories 参数
# 允许不相关历史提交,之后就可以正常使用pull,push进行提交代码
git push -u origin master
Existing Git repository
cd existing_repo
git remote add origin http://10.0.27.135:7777/insigma-traffic/annotator.git
git push -u origin --all
git push -u origin --tags
集成mybatis
集成durid数据库连接
- 数据库连接使用durid,dao层引入pom依赖
<properties>
<java.version>1.8</java.version>
<spring-boot-version>2.5.0</spring-boot-version>
</properties>
<dependencies>
<!-- mybatis begin -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.4</version>
</dependency>
<!-- mybatis end -->
<!-- jdbc 相关依赖 begin -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
<version>${spring-boot-version}</version>
</dependency>
<!-- jdbc 相关依赖 end -->
<!--引入druid数据源-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.10</version>
</dependency>
<!-- jdbc 相关依赖 end -->
</dependencies>
- 配置durid dataSource
package com.wangzhongxing.springcloud.web;
import com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import</