SpringBoot單體多模塊項(xiàng)目環(huán)境搭建
快速搭建一個基于SpringBoot + Mybatis Plus 的多模塊的單體架構(gòu)項(xiàng)目。
1、創(chuàng)建Maven子模塊
按照如下目錄結(jié)構(gòu)創(chuàng)建一個多模塊的Maven工程。
lease ├── common(公共模塊——工具類、公用配置等) │ ├── pom.xml │ └── src ├── model(數(shù)據(jù)模型——與數(shù)據(jù)庫相對應(yīng)地實(shí)體類) │ ├── pom.xml │ └── src ├── web(Web模塊) │ ├── pom.xml │ ├── web-admin(后臺管理系統(tǒng)Web模塊——包含mapper、service、controller) │ │ ├── pom.xml │ │ └── src │ └── web-app(移動端Web模塊——包含mapper、service、controller) │ ├── pom.xml │ └── src └── pom.xml
步驟1:創(chuàng)建項(xiàng)目根模塊
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
?
<modelVersion>4.0.0</modelVersion>
<groupId>com.ghm</groupId>
<artifactId>JavaPracKit</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
?
<!-- 子模塊 -->
<modules>
<module>common</module>
<module>model</module>
<module>web</module>
</modules>
?
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
?
</project>
步驟2:創(chuàng)建common子模塊
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.ghm</groupId>
<artifactId>JavaPracKit</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
?
<artifactId>common</artifactId>
?
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
?
</project>
步驟3:創(chuàng)建model子模塊
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.ghm</groupId>
<artifactId>JavaPracKit</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
?
<artifactId>model</artifactId>
?
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
?
</project>
步驟4:創(chuàng)建web子模塊
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
?
<parent>
<groupId>com.ghm</groupId>
<artifactId>JavaPracKit</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
?
<artifactId>web</artifactId>
<packaging>pom</packaging>
?
<!-- 子模塊 -->
<modules>
<module>admin</module>
</modules>
?
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
?
<dependencies>
?
<!-- 引入common模塊 -->
<dependency>
<groupId>com.ghm</groupId>
<artifactId>common</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
?
</project>
步驟5:創(chuàng)建web-admin子模塊
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.ghm</groupId>
<artifactId>web</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
?
<artifactId>admin</artifactId>
?
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
?
</project>
2、SpringBoot配置
步驟1:配置pom工程
在父工程的pom.xml文件中增加如下內(nèi)容:
<!-- 繼承Spring Boot父項(xiàng)目 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.0.5</version>
<relativePath/>
</parent>
?
<!-- 注意:直接替換pom文件中原有的properties -->
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<mybatis-plus.version>3.5.3.1</mybatis-plus.version>
<swagger.version>2.9.2</swagger.version>
<jwt.version>0.11.2</jwt.version>
<easycaptcha.version>1.6.2</easycaptcha.version>
<minio.version>8.2.0</minio.version>
<knife4j.version>4.1.0</knife4j.version>
<aliyun.sms.version>2.0.23</aliyun.sms.version>
</properties>
?
<!--配置dependencyManagement統(tǒng)一管理依賴版本-->
<dependencyManagement>
<dependencies>
<!--mybatis-plus-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>${mybatis-plus.version}</version>
</dependency>
?
<!--knife4j文檔-->
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
<version>${knife4j.version}</version>
</dependency>
?
<!--JWT登錄認(rèn)證相關(guān)-->
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-api</artifactId>
<version>${jwt.version}</version>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-impl</artifactId>
<scope>runtime</scope>
<version>${jwt.version}</version>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-jackson</artifactId>
<scope>runtime</scope>
<version>${jwt.version}</version>
</dependency>
?
<!--圖形驗(yàn)證碼-->
<dependency>
<groupId>com.github.whvcse</groupId>
<artifactId>easy-captcha</artifactId>
<version>${easycaptcha.version}</version>
</dependency>
?
<!--對象存儲,用于存儲圖像等非結(jié)構(gòu)化數(shù)據(jù)-->
<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
<version>${minio.version}</version>
</dependency>
?
<!--阿里云短信客戶端,用于發(fā)送短信驗(yàn)證碼-->
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>dysmsapi20170525</artifactId>
<version>${aliyun.sms.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
在web模塊的pom.xml文件中增加如下內(nèi)容:
<!--包含spring web相關(guān)依賴-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
?
<!--包含spring test相關(guān)依賴-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
?
<!-- Spring Boot Maven插件,用于打包可執(zhí)行的JAR文件 -->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
步驟2:創(chuàng)建application.yml文件
在web-admin模塊的src/main/resources目錄下創(chuàng)建application.yml配置文件,內(nèi)容如下:
server: port: 8080
步驟3: 創(chuàng)建SpringBoot啟動類
在web-admin模塊下創(chuàng)建com.atguigu.lease.AdminWebApplication類,內(nèi)容如下:
@SpringBootApplication
public class AdminWebApplication {
public static void main(String[] args) {
SpringApplication.run(AdminWebApplication.class, args);
}
}
3、Mybatis-Plus配置
Mybatis-Plus為公用工具,故將其配置于common模塊。具體配置可參考其官方文檔。
步驟1:pom文件配置
在common模塊的pom.xml文件中增加如下內(nèi)容:
<!--mybatis-plus-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
</dependency>
<!--mysql驅(qū)動-->
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
</dependency>
在model模塊的pom.xml文件中增加如下內(nèi)容:
因?yàn)?strong>model模塊下的實(shí)體類中需要配置Mybatis-Plus相關(guān)注解,故也需引入Mybatis-Plus依賴
<!--mybatis-plus-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
</dependency>
步驟2:application.yml配置
spring:
datasource:
type: com.zaxxer.hikari.HikariDataSource
url: jdbc:mysql://<hostname>:<port>/<database>?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=GMT%2b8
username: <username>
password: <password>
hikari:
connection-test-query: SELECT 1 # 自動檢測連接
connection-timeout: 60000 #數(shù)據(jù)庫連接超時(shí)時(shí)間,默認(rèn)30秒
idle-timeout: 500000 #空閑連接存活最大時(shí)間,默認(rèn)600000(10分鐘)
max-lifetime: 540000 #此屬性控制池中連接的最長生命周期,值0表示無限生命周期,默認(rèn)1800000即30分鐘
maximum-pool-size: 12 #連接池最大連接數(shù),默認(rèn)是10
minimum-idle: 10 #最小空閑連接數(shù)量
pool-name: SPHHikariPool # 連接池名稱
#用于打印框架生成的sql語句,便于調(diào)試
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
注意:需根據(jù)實(shí)際情況修改hostname、port、database、username、password。
步驟3:添加配置類
在common模塊下創(chuàng)建com.atguigu.lease.common.mybatisplus.MybatisPlusConfiguration類,內(nèi)容如下:
@Configuration
@MapperScan("com.atguigu.lease.web.*.mapper")
public class MybatisPlusConfiguration {
}
注意:@MapperScan()的包路徑需要根據(jù)實(shí)際情況進(jìn)行修改。
4、Knife4j配置
步驟1:pom文件配置
在web模塊的pom.xml文件添加如下內(nèi)容
因?yàn)?strong>web-app模塊同樣需要 依賴,故在兩個的父工程引入依賴即可
<!-- knife4j -->
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
</dependency>
在model模塊的pom.xml文件添加上述內(nèi)容
因?yàn)?strong>model模塊下的實(shí)體類需要配置Knife4j相關(guān)注解,故也需引入Knife4j依賴
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
</dependency>
步驟2:添加配置類
后臺管理系統(tǒng)和移動端的接口配置并不相同,所以需各自編寫一個配置類。在web-admin模塊下創(chuàng)建com.atguigu.lease.web.admin.custom.config.Knife4jConfiguration類,內(nèi)容如下:
@Configuration
public class Knife4jConfiguration {
@Bean
public OpenAPI customOpenAPI() {
return new OpenAPI().info(
new Info()
.title("后臺管理系統(tǒng)API")
.version("1.0")
.description("后臺管理系統(tǒng)API"));
}
@Bean
public GroupedOpenApi systemAPI() {
return GroupedOpenApi.builder().group("系統(tǒng)信息管理").
pathsToMatch(
"/admin/system/**"
).
build();
}
@Bean
public GroupedOpenApi loginAPI() {
return GroupedOpenApi.builder().group("后臺登錄管理").
pathsToMatch(
"/admin/login/**",
"/admin/info"
).
build();
}
@Bean
public GroupedOpenApi apartmentAPI() {
return GroupedOpenApi.builder().group("公寓信息管理").
pathsToMatch(
"/admin/apartment/**",
"/admin/room/**",
"/admin/label/**",
"/admin/facility/**",
"/admin/fee/**",
"/admin/attr/**",
"/admin/payment/**",
"/admin/region/**",
"/admin/term/**",
"/admin/file/**"
).build();
}
@Bean
public GroupedOpenApi leaseAPI() {
return GroupedOpenApi.builder().group("租賃信息管理").
pathsToMatch(
"/admin/appointment/**",
"/admin/agreement/**"
).build();
}
@Bean
public GroupedOpenApi userAPI() {
return GroupedOpenApi.builder().group("平臺用戶管理").
pathsToMatch(
"/admin/user/**"
).build();
}
}
注意:pathsToMatch參數(shù)需要根據(jù)實(shí)際情況進(jìn)行配置。
到此這篇關(guān)于SpringBoot單體多模塊項(xiàng)目環(huán)境搭建的文章就介紹到這了,更多相關(guān)SpringBoot單體多模塊搭建內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- SpringBoot多模塊掃描包問題及解決
- SpringBoot多模塊自動配置失效問題的解決方案
- SpringBoot多模塊如何統(tǒng)一管理
- 多模塊的springboot項(xiàng)目發(fā)布指定模塊的腳本方式
- idea創(chuàng)建Springboot多模塊項(xiàng)目(聚合項(xiàng)目)
- SpringBoot多模塊搭建的實(shí)現(xiàn)示例
- springboot的maven多模塊混淆jar包的實(shí)現(xiàn)方法
- springboot項(xiàng)目父子多模塊打包方式
- SpringBoot多模塊打包部署Docker的項(xiàng)目實(shí)戰(zhàn)
- springboot結(jié)合maven實(shí)現(xiàn)多模塊打包
相關(guān)文章
Java連接MySQL數(shù)據(jù)庫命令行程序過程
SQL編程包括兩種形式,一種是過程化編程,主要通過數(shù)據(jù)庫交互式工具,通過存儲過程、觸發(fā)器、函數(shù)等形式的編程;另一種是嵌入式SQL編程,將SQL語句嵌入到高級開發(fā)語言,完成數(shù)據(jù)的各種操作2021-10-10
Java SpringBoot模板引擎之 Thymeleaf入門詳解
jsp有著強(qiáng)大的功能,能查出一些數(shù)據(jù)轉(zhuǎn)發(fā)到JSP頁面以后,我們可以用jsp輕松實(shí)現(xiàn)數(shù)據(jù)的顯示及交互等,包括能寫Java代碼。但是,SpringBoot首先是以jar的方式,不是war;其次我們的tomcat是嵌入式的,所以現(xiàn)在默認(rèn)不支持jsp2021-10-10
使用java實(shí)現(xiàn)云端資源共享小程序的代碼
這篇文章主要介紹了用java寫一個云端資源共享小程序,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07
Java連接數(shù)據(jù)庫實(shí)現(xiàn)方式
文章講述了Java連接MySQL數(shù)據(jù)庫的詳細(xì)步驟,包括下載和導(dǎo)入JDBC驅(qū)動、創(chuàng)建數(shù)據(jù)庫和表、以及編寫連接和讀取數(shù)據(jù)的代碼2024-11-11
java中MultipartFile互轉(zhuǎn)File的方法
本文主要介紹了java中MultipartFile互轉(zhuǎn)File的方法,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-10-10
Spring注解配置AOP導(dǎo)致通知執(zhí)行順序紊亂解決方案
這篇文章主要介紹了Spring注解配置AOP導(dǎo)致通知執(zhí)行順序紊亂解決方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-10-10

