SpringBoot單體多模塊項目環(huán)境搭建
快速搭建一個基于SpringBoot + Mybatis Plus 的多模塊的單體架構(gòu)項目。
1、創(chuàng)建Maven子模塊
按照如下目錄結(jié)構(gòu)創(chuàng)建一個多模塊的Maven工程。
lease ├── common(公共模塊——工具類、公用配置等) │ ├── pom.xml │ └── src ├── model(數(shù)據(jù)模型——與數(shù)據(jù)庫相對應地實體類) │ ├── 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)建項目根模塊
<?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父項目 -->
<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登錄認證相關-->
<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>
?
<!--圖形驗證碼-->
<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ā)送短信驗證碼-->
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>dysmsapi20170525</artifactId>
<version>${aliyun.sms.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
在web模塊的pom.xml文件中增加如下內(nèi)容:
<!--包含spring web相關依賴-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
?
<!--包含spring test相關依賴-->
<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)容:
因為model模塊下的實體類中需要配置Mybatis-Plus相關注解,故也需引入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ù)庫連接超時時間,默認30秒
idle-timeout: 500000 #空閑連接存活最大時間,默認600000(10分鐘)
max-lifetime: 540000 #此屬性控制池中連接的最長生命周期,值0表示無限生命周期,默認1800000即30分鐘
maximum-pool-size: 12 #連接池最大連接數(shù),默認是10
minimum-idle: 10 #最小空閑連接數(shù)量
pool-name: SPHHikariPool # 連接池名稱
#用于打印框架生成的sql語句,便于調(diào)試
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
注意:需根據(jù)實際情況修改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ù)實際情況進行修改。
4、Knife4j配置
步驟1:pom文件配置
在web模塊的pom.xml文件添加如下內(nèi)容
因為web-app模塊同樣需要 依賴,故在兩個的父工程引入依賴即可
<!-- knife4j -->
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
</dependency>
在model模塊的pom.xml文件添加上述內(nèi)容
因為model模塊下的實體類需要配置Knife4j相關注解,故也需引入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ù)實際情況進行配置。
到此這篇關于SpringBoot單體多模塊項目環(huán)境搭建的文章就介紹到這了,更多相關SpringBoot單體多模塊搭建內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
java -jar example.jar 產(chǎn)生的日志輸出到指定文件的方法
這篇文章給大家介紹java -jar example.jar 產(chǎn)生的日志輸出到指定文件的方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,感興趣的朋友一起看看吧2025-08-08

