SpringBoot單體多模塊項(xiàng)目環(huán)境搭建
快速搭建一個(gè)基于SpringBoot + Mybatis Plus 的多模塊的單體架構(gòu)項(xiàng)目。
1、創(chuàng)建Maven子模塊
按照如下目錄結(jié)構(gòu)創(chuàng)建一個(gè)多模塊的Maven工程。
lease ├── common(公共模塊——工具類、公用配置等) │ ├── pom.xml │ └── src ├── model(數(shù)據(jù)模型——與數(shù)據(jù)庫(kù)相對(duì)應(yīng)地實(shí)體類) │ ├── pom.xml │ └── src ├── web(Web模塊) │ ├── pom.xml │ ├── web-admin(后臺(tái)管理系統(tǒng)Web模塊——包含mapper、service、controller) │ │ ├── pom.xml │ │ └── src │ └── web-app(移動(dòng)端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>
?
<!--對(duì)象存儲(chǔ),用于存儲(chǔ)圖像等非結(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啟動(dòng)類
在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ū)動(dòng)-->
<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 # 自動(dòng)檢測(cè)連接
connection-timeout: 60000 #數(shù)據(jù)庫(kù)連接超時(shí)時(shí)間,默認(rèn)30秒
idle-timeout: 500000 #空閑連接存活最大時(shí)間,默認(rèn)600000(10分鐘)
max-lifetime: 540000 #此屬性控制池中連接的最長(zhǎng)生命周期,值0表示無(wú)限生命周期,默認(rèn)1800000即30分鐘
maximum-pool-size: 12 #連接池最大連接數(shù),默認(rèn)是10
minimum-idle: 10 #最小空閑連接數(shù)量
pool-name: SPHHikariPool # 連接池名稱
#用于打印框架生成的sql語(yǔ)句,便于調(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模塊同樣需要 依賴,故在兩個(gè)的父工程引入依賴即可
<!-- 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ái)管理系統(tǒng)和移動(dòng)端的接口配置并不相同,所以需各自編寫(xiě)一個(gè)配置類。在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ái)管理系統(tǒng)API")
.version("1.0")
.description("后臺(tái)管理系統(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("后臺(tái)登錄管理").
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("平臺(tái)用戶管理").
pathsToMatch(
"/admin/user/**"
).build();
}
}
注意:pathsToMatch參數(shù)需要根據(jù)實(shí)際情況進(jìn)行配置。
到此這篇關(guān)于SpringBoot單體多模塊項(xiàng)目環(huán)境搭建的文章就介紹到這了,更多相關(guān)SpringBoot單體多模塊搭建內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- SpringBoot多模塊掃描包問(wèn)題及解決
- SpringBoot多模塊自動(dòng)配置失效問(wèn)題的解決方案
- 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去掉小數(shù)點(diǎn)后面無(wú)效0的方案與建議
當(dāng)前小數(shù)點(diǎn)后面的位數(shù)過(guò)多的時(shí)候,多余的0沒(méi)有實(shí)際意義,下面這篇文章主要給大家介紹了關(guān)于Java去掉小數(shù)點(diǎn)后面無(wú)效0的方案與建議,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-07-07
Java直接輸出對(duì)象變成@.....的問(wèn)題及解決
這篇文章主要介紹了Java直接輸出對(duì)象變成@.....的問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09
java -jar example.jar 產(chǎn)生的日志輸出到指定文件的方法
這篇文章給大家介紹java -jar example.jar 產(chǎn)生的日志輸出到指定文件的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,感興趣的朋友一起看看吧2025-08-08
Java在長(zhǎng)字符串中查找短字符串的實(shí)現(xiàn)多種方法
這篇文章主要介紹了Java在長(zhǎng)字符串中查找短字符串的實(shí)現(xiàn)多種方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12
Java的動(dòng)態(tài)代理模式之Cglib代理詳解
這篇文章主要介紹了Java的動(dòng)態(tài)代理模式之Cglib代理詳解,Cglib代理也叫作?子類代理,它是在內(nèi)存中構(gòu)建一個(gè)子類對(duì)象從而實(shí)現(xiàn)對(duì)目標(biāo)對(duì)象功能擴(kuò)展,?有些書(shū)也將Cglib代理歸屬到動(dòng)態(tài)代理,需要的朋友可以參考下2023-11-11
Java設(shè)計(jì)模式之責(zé)任鏈模式簡(jiǎn)介
這篇文章主要介紹了Java設(shè)計(jì)模式之責(zé)任鏈模式,需要的朋友可以參考下2014-07-07

