最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

spring相關(guān)框架及基本目錄詳解

 更新時(shí)間:2026年05月09日 09:15:47   作者:凱qwq  
本文介紹了SpringBoot單體工程、父子工程和微服務(wù)工程的接收類和目錄結(jié)構(gòu),以及SpringMVC(Boot整合)工程的核心定位、目錄結(jié)構(gòu)和核心配置,建議接收類遵循模塊名+操作+ReqDTO的命名規(guī)則,并將通用代碼抽離為獨(dú)立模塊,合理拆分項(xiàng)目結(jié)構(gòu),以提高開(kāi)發(fā)和維護(hù)效率

一、單體 Spring Boot 工程

單工程、單可執(zhí)行 Jar 包,所有業(yè)務(wù)邏輯、配置、依賴都集中在一個(gè)工程內(nèi),無(wú)需模塊拆分,開(kāi)發(fā)和部署成本低,適合中小型 CRUD 項(xiàng)目、快速原型開(kāi)發(fā)。

一、接收類的核心存放目錄

1. 基礎(chǔ)目錄結(jié)構(gòu)(單項(xiàng)目)

接收類統(tǒng)一放在根包下的dto目錄,且建議再細(xì)分req(request,接收類)和resp(response,響應(yīng)類)子目錄,結(jié)構(gòu)如下:

demo-boot-single/          # 項(xiàng)目根目錄
├── src/
│   ├── main/
│   │   ├── java/
│   │   │   └── com/example/demo/  # 根包(啟動(dòng)類必須在此)
│   │   │       ├── DemoApplication.java  # 唯一啟動(dòng)類(核心入口)
│   │   │       ├── controller/           # 接口層:接收前端請(qǐng)求
│   │   │       │   ├── UserController.java
│   │   │       │   └── OrderController.java
│   │   │       ├── service/              # 業(yè)務(wù)層接口:定義業(yè)務(wù)方法
│   │   │       │   ├── UserService.java
│   │   │       │   └── OrderService.java
│   │   │       ├── service/impl/         # 業(yè)務(wù)層實(shí)現(xiàn):核心業(yè)務(wù)邏輯
│   │   │       │   ├── UserServiceImpl.java
│   │   │       │   └── OrderServiceImpl.java
│   │   │       ├── mapper/               # 數(shù)據(jù)訪問(wèn)層:對(duì)接數(shù)據(jù)庫(kù)
│   │   │       │   ├── UserMapper.java
│   │   │       │   └── OrderMapper.java
│   │   │       ├── entity/               # 實(shí)體層:映射數(shù)據(jù)庫(kù)表
│   │   │       │   ├── User.java
│   │   │       │   └── Order.java
│   │   │       ├── dto/                  # 數(shù)據(jù)傳輸對(duì)象:封裝入?yún)?出參
│   │   │       │   ├── req/              # 請(qǐng)求DTO:接收前端參數(shù)
│   │   │       │   │   ├── UserAddReqDTO.java
│   │   │       │   │   └── OrderQueryReqDTO.java
│   │   │       │   └── resp/             # 響應(yīng)DTO:返回前端數(shù)據(jù)
│   │   │       │       ├── UserInfoRespDTO.java
│   │   │       │       └── OrderListRespDTO.java
│   │   │       ├── config/               # 配置層:自定義Bean/框架配置
│   │   │       │   ├── MyBatisConfig.java
│   │   │       │   └── RedisConfig.java
│   │   │       ├── constant/             # 常量層:枚舉/固定值
│   │   │       │   ├── CommonConstant.java
│   │   │       │   └── UserStatusEnum.java
│   │   │       ├── exception/            # 異常層:自定義異常+全局處理
│   │   │       │   ├── BusinessException.java
│   │   │       │   └── GlobalExceptionHandler.java
│   │   │       ├── interceptor/          # 攔截器:登錄校驗(yàn)/日志
│   │   │       │   └── LoginInterceptor.java
│   │   │       └── util/                 # 工具層:通用輔助方法
│   │   │           ├── DateUtil.java
│   │   │           └── HttpUtil.java
│   │   └── resources/                    # 資源目錄
│   │       ├── application.yml           # 核心配置文件(端口/數(shù)據(jù)庫(kù)/Redis)
│   │       ├── application-dev.yml       # 開(kāi)發(fā)環(huán)境配置
│   │       ├── application-prod.yml      # 生產(chǎn)環(huán)境配置
│   │       ├── mapper/                   # MyBatis XML映射文件
│   │       │   ├── UserMapper.xml
│   │       │   └── OrderMapper.xml
│   │       ├── static/                   # 靜態(tài)資源(CSS/JS/圖片,可選)
│   │       ├── templates/                # 視圖模板(Thymeleaf,可選)
│   │       └── db/                       # 數(shù)據(jù)庫(kù)腳本
│   │           ├── schema.sql            # 建表語(yǔ)句
│   │           └── data.sql              # 初始化數(shù)據(jù)
│   └── test/                             # 測(cè)試目錄(和main結(jié)構(gòu)一致)
│       └── java/com/example/demo/
│           ├── controller/
│           │   └── UserControllerTest.java
│           ├── service/
│           │   └── UserServiceTest.java
│           └── DemoApplicationTests.java
├── pom.xml                  # Maven依賴(所有依賴集中在此)
├── README.md                # 項(xiàng)目說(shuō)明
└── .gitignore               # Git忽略文件

2. 按業(yè)務(wù)模塊細(xì)分(復(fù)雜單項(xiàng)目)

如果項(xiàng)目業(yè)務(wù)模塊多(如用戶、訂單、商品),可在req下再按模塊拆分,更易維護(hù):

plaintext

dto/
├── req/
│   ├── user/             # 用戶模塊接收類
│   │   ├── UserAddReqDTO.java
│   │   └── UserLoginReqDTO.java
│   ├── order/            # 訂單模塊接收類
│   │   ├── OrderCreateReqDTO.java
│   │   └── OrderCancelReqDTO.java
│   └── ai/               # AI模塊接收類
│       └── ChatReqDTO.java
└── resp/
    ├── user/
    └── order/

二、接收類的命名規(guī)范(必遵循)

接收類的命名要直觀體現(xiàn) “業(yè)務(wù) + 操作 + 類型”,讓開(kāi)發(fā)者一眼知道用途:

表格

場(chǎng)景

命名規(guī)則

示例

新增接口接收類

模塊名 + Add + ReqDTO

UserAddReqDTO

、OrderAddReqDTO

修改接口接收類

模塊名 + Update + ReqDTO

UserUpdateReqDTO

查詢接口接收類

模塊名 + Query + ReqDTO

OrderQueryReqDTO

、UserPageReqDTO

登錄 / 特殊操作接收類

模塊名 + 操作 + ReqDTO

UserLoginReqDTO

、ChatSendReqDTO

三、關(guān)鍵注意事項(xiàng)(避坑)

禁止直接用實(shí)體類做接收類

  • 實(shí)體類(entity/User.java)是數(shù)據(jù)庫(kù)表的映射,包含主鍵、創(chuàng)建時(shí)間等前端無(wú)需傳遞的字段,直接接收會(huì)暴露數(shù)據(jù)庫(kù)結(jié)構(gòu),且易引發(fā)參數(shù)安全問(wèn)題;
  • 示例:前端僅需傳username/password,但實(shí)體類有id/createTime,用實(shí)體類接收會(huì)導(dǎo)致這些字段被前端隨意賦值。

簡(jiǎn)單場(chǎng)景的簡(jiǎn)化方案

  • 極小項(xiàng)目(僅 1-2 個(gè)接口):可臨時(shí)用@RequestParam單個(gè)接收參數(shù),無(wú)需創(chuàng)建接收類;
  • 中等項(xiàng)目:至少拆分req/resp,避免接收 / 響應(yīng)類混放。

接收類的使用示例:在 Controller 中調(diào)用接收類,語(yǔ)義清晰:java運(yùn)行

@RestController
@RequestMapping("/user")
public class UserController {
    @PostMapping("/add")
    // 直接接收封裝好的接收類
    public Result<?> addUser(@RequestBody UserAddReqDTO userAddReqDTO) {
        userService.addUser(userAddReqDTO);
        return Result.success();
    }
}

特殊接收類的處理

  • 文件上傳接收類:可單獨(dú)放在dto/req/file/下,如FileUploadReqDTO.java
  • 分頁(yè)通用接收類:可放在dto/req/common/下,如PageReqDTO.java,供所有模塊復(fù)用。

總結(jié):

  • 核心位置:后端接收類統(tǒng)一放在dto/req/目錄下,按業(yè)務(wù)模塊(如user/order)細(xì)分;
  • 命名規(guī)范:模塊名 + 操作 + ReqDTO(如UserAddReqDTO),直觀體現(xiàn)用途;
  • 核心原則:接收類和實(shí)體類、響應(yīng)類嚴(yán)格區(qū)分,禁止用實(shí)體類直接接收前端參數(shù)。

二、Spring Boot 父子工程

本質(zhì)還是單體工程(最終打包為一個(gè) Jar),但在代碼層面拆分為 “父工程 + 子模塊”,將通用代碼(工具、異常、常量)抽離為獨(dú)立子模塊,業(yè)務(wù)代碼保留在另一個(gè)子模塊,提升代碼復(fù)用性和維護(hù)性,適合中等規(guī)模、需要代碼分層管理的項(xiàng)目。

一、父子工程整體結(jié)構(gòu)(核心:公共模塊獨(dú)立,業(yè)務(wù)模塊保留)

demo-boot-parent/           # 父工程(僅管理依賴版本,無(wú)業(yè)務(wù)代碼)
├── pom.xml                 # 父POM:統(tǒng)一管理所有子模塊的依賴版本
├── demo-common/            # 子模塊1:通用模塊(所有業(yè)務(wù)復(fù)用)
│   ├── pom.xml
│   └── src/main/java/com/example/demo/common/
│       ├── constant/       # 通用常量/枚舉
│       │   ├── CommonConstant.java
│       │   └── UserStatusEnum.java
│       ├── exception/      # 通用異常/全局處理器
│       │   ├── BusinessException.java
│       │   └── GlobalExceptionHandler.java
│       ├── interceptor/    # 通用攔截器
│       │   └── LoginInterceptor.java
│       ├── util/           # 通用工具類
│       │   ├── DateUtil.java
│       │   └── HttpUtil.java
│       └── config/         # 通用配置(跨域/Redis)
│           └── RedisConfig.java
└── demo-business/          # 子模塊2:業(yè)務(wù)核心模塊(僅此處有啟動(dòng)類)
├── pom.xml             # 依賴demo-common子模塊
└── src/
├── main/
│   ├── java/com/example/demo/
│   │   ├── DemoApplication.java  # 唯一啟動(dòng)類
│   │   ├── controller/           # 業(yè)務(wù)控制器
│   │   │   ├── UserController.java
│   │   │   └── OrderController.java
│   │   ├── service/              # 業(yè)務(wù)服務(wù)接口
│   │   │   ├── UserService.java
│   │   │   └── OrderService.java
│   │   ├── service/impl/         # 業(yè)務(wù)服務(wù)實(shí)現(xiàn)
│   │   │   ├── UserServiceImpl.java
│   │   │   └── OrderServiceImpl.java
│   │   ├── mapper/               # 業(yè)務(wù)數(shù)據(jù)訪問(wèn)層
│   │   │   ├── UserMapper.java
│   │   │   └── OrderMapper.java
│   │   ├── entity/               # 業(yè)務(wù)實(shí)體
│   │   │   ├── User.java
│   │   │   └── Order.java
│   │   ├── dto/                  # 業(yè)務(wù)DTO
│   │   │   ├── req/
│   │   │   └── resp/
│   │   └── config/               # 業(yè)務(wù)專屬配置
│   │       └── MyBatisConfig.java
│   └── resources/                # 業(yè)務(wù)資源
│       ├── application.yml
│       ├── application-dev.yml
│       ├── mapper/
│       │   ├── UserMapper.xml
│       │   └── OrderMapper.xml
│       └── db/
└── test/                         # 業(yè)務(wù)測(cè)試目錄
└── java/com/example/demo/
├── controller/
└── service/

二、核心工程職責(zé)說(shuō)明(保證子工程獨(dú)立)

表格

工程名稱

核心職責(zé)

獨(dú)立性說(shuō)明

demo-springboot-parent

僅作為父工程,無(wú)任何業(yè)務(wù)代碼,只在 pom.xml 中統(tǒng)一管理所有子工程的依賴版本(如 Spring Boot、MyBatis、Lombok 等)

純依賴管理,不依賴任何子工程

demo-common

存放所有公共、通用的代碼(常量、異常、工具、通用配置),無(wú)業(yè)務(wù)邏輯

獨(dú)立編譯、可單獨(dú)發(fā)布,被 demo-business 依賴,不依賴任何業(yè)務(wù)工程

demo-business

存放核心業(yè)務(wù)代碼(控制器、服務(wù)、Mapper、實(shí)體、DTO)+ 唯一啟動(dòng)類

依賴 demo-common,是最終可運(yùn)行的工程,包含所有業(yè)務(wù)邏輯

三、關(guān)鍵配置要點(diǎn)(保證父子工程協(xié)同)

1. 父工程 pom.xml 核心內(nèi)容(統(tǒ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>
  <!-- 父工程坐標(biāo) -->
  <groupId>com.example</groupId>
  <artifactId>demo-springboot-parent</artifactId>
  <version>1.0.0</version>
  <packaging>pom</packaging>
  <name>demo-springboot-parent</name>
  <!-- 子工程聲明 -->
  <modules>
    <module>demo-common</module>
    <module>demo-business</module>
  </modules>
  <!-- 統(tǒng)一依賴版本管理 -->
  <properties>
    <spring.boot.version>3.2.0</spring.boot.version>
    <mybatis.version>3.5.15</mybatis.version>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>
  <!-- 依賴版本鎖定 -->
  <dependencyManagement>
    <dependencies>
      <!-- Spring Boot父依賴 -->
      <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-dependencies</artifactId>
        <version>${spring.boot.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <!-- 子工程依賴聲明 -->
      <dependency>
        <groupId>com.example</groupId>
        <artifactId>demo-common</artifactId>
        <version>1.0.0</version>
      </dependency>
    </dependencies>
  </dependencyManagement>
</project>

2. demo-common 子工程 pom.xml(僅引入通用依賴)

<?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">
  <parent>
    <groupId>com.example</groupId>
    <artifactId>demo-springboot-parent</artifactId>
    <version>1.0.0</version>
  </parent>
  <artifactId>demo-common</artifactId>
  <packaging>jar</packaging>
  <name>demo-common</name>
  <!-- 僅引入通用依賴(無(wú)業(yè)務(wù)依賴) -->
  <dependencies>
    <!-- Spring Context(配置/Bean) -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
    </dependency>
    <!-- Redis客戶端(通用配置) -->
    <dependency>
      <groupId>redis.clients</groupId>
      <artifactId>jedis</artifactId>
    </dependency>
    <!-- Lombok(工具類簡(jiǎn)化) -->
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <optional>true</optional>
    </dependency>
  </dependencies>
</project>

3. demo-business 子工程 pom.xml(依賴 demo-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">
  <parent>
    <groupId>com.example</groupId>
    <artifactId>demo-springboot-parent</artifactId>
    <version>1.0.0</version>
  </parent>
  <artifactId>demo-business</artifactId>
  <packaging>jar</packaging>
  <name>demo-business</name>
  <!-- 核心依賴:引入公共模塊 -->
  <dependencies>
    <dependency>
      <groupId>com.example</groupId>
      <artifactId>demo-common</artifactId>
    </dependency>
    <!-- Spring Boot Web(控制器) -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!-- MyBatis(數(shù)據(jù)訪問(wèn)) -->
    <dependency>
      <groupId>org.mybatis.spring.boot</groupId>
      <artifactId>mybatis-spring-boot-starter</artifactId>
      <version>${mybatis.version}</version>
    </dependency>
    <!-- 數(shù)據(jù)庫(kù)驅(qū)動(dòng) -->
    <dependency>
      <groupId>com.mysql</groupId>
      <artifactId>mysql-connector-j</artifactId>
      <scope>runtime</scope>
    </dependency>
  </dependencies>
  <!-- 啟動(dòng)類配置 -->
  <build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <configuration>
          <mainClass>com.example.demo.DemoApplication</mainClass>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>

四、關(guān)鍵注意事項(xiàng)(保證子工程獨(dú)立 & 可運(yùn)行)

  • 包名規(guī)范:demo-common 的包名統(tǒng)一為com.example.demo.common,demo-business 引用時(shí)需導(dǎo)入該包(如import com.example.demo.common.util.DateUtil);
  • 啟動(dòng)類位置:僅 demo-business 有啟動(dòng)類,且放在com.example.demo根包下,確保能掃描到 demo-common 的 Bean(需在啟動(dòng)類加@ComponentScan(basePackages = "com.example.demo"));
  • 配置隔離:demo-common 僅放通用配置(如 Redis、WebMvc),業(yè)務(wù)專屬配置(如 MyBatis)放在 demo-business;
  • 依賴隔離:demo-common 不引入任何業(yè)務(wù)依賴(如 MyBatis、數(shù)據(jù)庫(kù)驅(qū)動(dòng)),僅保留通用依賴,保證獨(dú)立性。

總結(jié):

  • 拆分核心:將常量、異常、工具、通用配置抽離為獨(dú)立的 demo-common 子工程,業(yè)務(wù)代碼 + 啟動(dòng)類保留在 demo-business;
  • 父子關(guān)系:父工程僅管理依賴版本,子工程獨(dú)立(demo-common 可單獨(dú)復(fù)用,demo-business 是唯一可運(yùn)行工程);
  • 協(xié)同規(guī)則:demo-business 依賴 demo-common,demo-common 不依賴任何業(yè)務(wù)模塊,保證低耦合、高復(fù)用。

三、Spring Cloud 微服務(wù)工程

一、微服務(wù)整體目錄結(jié)構(gòu)(核心:按服務(wù)拆分,復(fù)用公共模塊)

demo-cloud/                 # 微服務(wù)父工程(管理Spring Cloud版本)
├── pom.xml                 # 父POM:統(tǒng)一管理Spring Cloud/Spring Boot版本
├── demo-common/            # 公共模塊(所有服務(wù)復(fù)用)
│   ├── pom.xml
│   └── src/main/java/com/example/demo/common/
│       ├── constant/       # 全局常量
│       ├── exception/      # 全局異常
│       ├── util/           # 通用工具
│       ├── dto/            # 通用DTO(分頁(yè)/統(tǒng)一響應(yīng)體)
│       └── feign/          # Feign遠(yuǎn)程調(diào)用接口(供服務(wù)間調(diào)用)
│           └── UserFeignClient.java
├── demo-gateway/           # 網(wǎng)關(guān)服務(wù)(微服務(wù)統(tǒng)一入口)
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/com/example/demo/gateway/
│       │   │   ├── DemoGatewayApplication.java  # 網(wǎng)關(guān)啟動(dòng)類
│       │   │   ├── config/                     # 網(wǎng)關(guān)配置
│       │   │   │   └── GatewayConfig.java
│       │   │   └── filter/                     # 網(wǎng)關(guān)過(guò)濾器(鑒權(quán)/限流)
│       │   │       └── AuthFilter.java
│       │   └── resources/
│       │       ├── application.yml             # 網(wǎng)關(guān)配置(路由規(guī)則/Nacos地址)
│       │       └── application-dev.yml
│       └── test/
├── demo-user-service/      # 用戶微服務(wù)(獨(dú)立業(yè)務(wù))
│   ├── pom.xml             # 依賴demo-common
│   └── src/
│       ├── main/
│       │   ├── java/com/example/demo/user/
│       │   │   ├── DemoUserApplication.java    # 用戶服務(wù)啟動(dòng)類
│       │   │   ├── controller/                 # 用戶接口
│       │   │   │   └── UserController.java
│       │   │   ├── service/                    # 用戶業(yè)務(wù)
│       │   │   │   ├── UserService.java
│       │   │   │   └── impl/UserServiceImpl.java
│       │   │   ├── mapper/                     # 用戶數(shù)據(jù)訪問(wèn)
│       │   │   │   └── UserMapper.java
│       │   │   ├── entity/                     # 用戶實(shí)體
│       │   │   │   └── User.java
│       │   │   ├── dto/                        # 用戶DTO
│       │   │   │   ├── req/
│       │   │   │   └── resp/
│       │   │   └── feign/                      # 對(duì)外暴露的Feign接口
│       │   │       └── UserFeignApi.java
│       │   └── resources/
│       │       ├── application.yml             # 用戶服務(wù)配置(端口/數(shù)據(jù)庫(kù)/Nacos)
│       │       ├── application-dev.yml
│       │       └── mapper/
│       │           └── UserMapper.xml
│       └── test/
└── demo-order-service/     # 訂單微服務(wù)(獨(dú)立業(yè)務(wù))
    ├── pom.xml             # 依賴demo-common + 引入user服務(wù)Feign
    └── src/
        ├── main/
        │   ├── java/com/example/demo/order/
        │   │   ├── DemoOrderApplication.java   # 訂單服務(wù)啟動(dòng)類
        │   │   ├── controller/                 # 訂單接口
        │   │   │   └── OrderController.java
        │   │   ├── service/                    # 訂單業(yè)務(wù)(調(diào)用user Feign)
        │   │   │   ├── OrderService.java
        │   │   │   └── impl/OrderServiceImpl.java
        │   │   ├── mapper/                     # 訂單數(shù)據(jù)訪問(wèn)
        │   │   │   └── OrderMapper.java
        │   │   ├── entity/                     # 訂單實(shí)體
        │   │   │   └── Order.java
        │   │   └── dto/                        # 訂單DTO
        │   └── resources/
        │       ├── application.yml             # 訂單服務(wù)配置
        │       └── application-dev.yml
        └── test/

2. 微服務(wù)啟動(dòng)類示例(用戶服務(wù))

package com.example.demo.user;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
/**
 * 用戶微服務(wù)啟動(dòng)類
 * @EnableDiscoveryClient:注冊(cè)到服務(wù)注冊(cè)中心(Nacos/Eureka)
 * @EnableFeignClients:開(kāi)啟Feign遠(yuǎn)程調(diào)用
 * @MapperScan:掃描Mapper接口
 */
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients(basePackages = "com.example.demo.common.feign")
@MapperScan("com.example.demo.user.mapper")
public class DemoUserApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoUserApplication.class, args);
    }
}

二、核心組件職責(zé)說(shuō)明(微服務(wù)特有)

組件名稱

核心職責(zé)

關(guān)鍵特點(diǎn)

demo-common

所有微服務(wù)的通用代碼,無(wú)業(yè)務(wù)邏輯

獨(dú)立 Jar 包,被網(wǎng)關(guān)、用戶、訂單等所有服務(wù)依賴

demo-gateway

微服務(wù)入口,負(fù)責(zé)路由轉(zhuǎn)發(fā)、統(tǒng)一鑒權(quán)、跨域、限流

無(wú)業(yè)務(wù)代碼,僅處理網(wǎng)關(guān)相關(guān)邏輯

demo-user-service

專注用戶業(yè)務(wù)(注冊(cè)、登錄、用戶信息管理)

獨(dú)立數(shù)據(jù)庫(kù),對(duì)外暴露 Feign 接口供訂單服務(wù)調(diào)用

demo-order-service

專注訂單業(yè)務(wù)(創(chuàng)建訂單、查詢訂單、調(diào)用用戶服務(wù)查用戶信息)

依賴用戶服務(wù) Feign,獨(dú)立數(shù)據(jù)庫(kù)

demo-ai-service

專注 AI 業(yè)務(wù)(對(duì)話、向量檢索)

無(wú)數(shù)據(jù)庫(kù)依賴,僅對(duì)接 AI 模型

三、單個(gè)微服務(wù)內(nèi)部分層(以用戶服務(wù)為例)

每個(gè)微服務(wù)內(nèi)部仍遵循 Spring Boot 單項(xiàng)目的分層規(guī)范,保證自身完整性:

demo-user-service/src/main/java/com/example/demo/user/
├── DemoUserApplication.java      # 微服務(wù)啟動(dòng)類(加@SpringBootApplication、@EnableDiscoveryClient)
├── controller/UserController.java # 用戶接口(僅處理用戶相關(guān)請(qǐng)求)
├── service/
│   ├── UserService.java          # 用戶服務(wù)接口
│   └── impl/UserServiceImpl.java # 用戶服務(wù)實(shí)現(xiàn)
├── mapper/UserMapper.java        # 用戶Mapper(對(duì)接user表)
├── entity/User.java              # 用戶實(shí)體(僅映射user表)
├── dto/
│   ├── req/UserAddReqDTO.java    # 用戶新增入?yún)?
│   └── resp/UserInfoRespDTO.java # 用戶信息出參
├── config/MyBatisConfig.java     # 用戶服務(wù)專屬M(fèi)yBatis配置
└── feign/UserFeignClient.java    # 對(duì)外暴露的Feign接口(供訂單服務(wù)調(diào)用)

四、微服務(wù)核心配置要點(diǎn)

一、微服務(wù)整體目錄結(jié)構(gòu)(核心:按服務(wù)拆分,復(fù)用公共模塊)

demo-microservice/                # 微服務(wù)父工程(僅管理依賴版本)
├── pom.xml                       # 父POM:統(tǒng)一管理Spring Cloud、各依賴版本
├── demo-common/                  # 公共通用模塊(所有微服務(wù)復(fù)用)
│   ├── pom.xml
│   └── src/main/java/com/example/demo/common/
│       ├── constant/             # 全局常量(如狀態(tài)碼、通用枚舉)
│       ├── exception/            # 全局異常(業(yè)務(wù)異常、全局處理器)
│       ├── util/                 # 通用工具(日期、HTTP、Bean拷貝)
│       ├── config/               # 通用配置(Redis、跨域、Feign配置)
│       ├── dto/                  # 通用DTO(分頁(yè)、統(tǒng)一響應(yīng)體)
│       └── feign/                # Feign遠(yuǎn)程調(diào)用接口(給其他服務(wù)調(diào)用)
├── demo-gateway/                 # 網(wǎng)關(guān)微服務(wù)(統(tǒng)一入口、路由、鑒權(quán))
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/com/example/demo/gateway/
│       │   │   ├── DemoGatewayApplication.java # 網(wǎng)關(guān)啟動(dòng)類
│       │   │   ├── config/       # 網(wǎng)關(guān)配置(路由、跨域、過(guò)濾器)
│       │   │   ├── filter/       # 網(wǎng)關(guān)過(guò)濾器(token校驗(yàn)、日志)
│       │   │   └── handler/      # 網(wǎng)關(guān)異常處理
│       │   └── resources/
│       │       ├── application.yml
│       │       └── application-dev.yml
│       └── test/
├── demo-user-service/            # 用戶微服務(wù)(用戶相關(guān)業(yè)務(wù))
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/com/example/demo/user/
│       │   │   ├── DemoUserApplication.java # 用戶服務(wù)啟動(dòng)類
│       │   │   ├── controller/   # 用戶控制器(僅用戶接口)
│       │   │   ├── service/      # 用戶服務(wù)層(接口+實(shí)現(xiàn))
│       │   │   ├── mapper/       # 用戶數(shù)據(jù)訪問(wèn)層
│       │   │   ├── entity/       # 用戶實(shí)體(僅用戶相關(guān)表)
│       │   │   ├── dto/          # 用戶DTO(入?yún)?出參)
│       │   │   ├── config/       # 用戶服務(wù)專屬配置(MyBatis、MQ)
│       │   │   └── feign/        # 對(duì)外暴露的Feign接口(供其他服務(wù)調(diào)用)
│       │   └── resources/
│       │       ├── application.yml
│       │       ├── application-dev.yml
│       │       └── mapper/       # 用戶Mapper.xml
│       └── test/
├── demo-order-service/           # 訂單微服務(wù)(訂單相關(guān)業(yè)務(wù))
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/com/example/demo/order/
│       │   │   ├── DemoOrderApplication.java # 訂單服務(wù)啟動(dòng)類
│       │   │   ├── controller/   # 訂單控制器
│       │   │   ├── service/      # 訂單服務(wù)層(含調(diào)用用戶服務(wù)Feign)
│       │   │   ├── mapper/       # 訂單數(shù)據(jù)訪問(wèn)層
│       │   │   ├── entity/       # 訂單實(shí)體
│       │   │   ├── dto/          # 訂單DTO
│       │   │   └── config/       # 訂單服務(wù)專屬配置
│       │   └── resources/
│       │       ├── application.yml
│       │       ├── application-dev.yml
│       │       └── mapper/       # 訂單Mapper.xml
│       └── test/
├── demo-ai-service/              # AI微服務(wù)(可選,AI相關(guān)業(yè)務(wù))
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/com/example/demo/ai/
│       │   │   ├── DemoAiApplication.java # AI服務(wù)啟動(dòng)類
│       │   │   ├── controller/   # AI控制器
│       │   │   ├── service/      # AI服務(wù)層
│       │   │   ├── model/        # AI模型相關(guān)DTO
│       │   │   └── config/       # AI配置(OpenAI密鑰、模型參數(shù))
│       │   └── resources/
│       │       ├── application.yml
│       │       ├── application-dev.yml
│       │       └── ai_prompt/    # AI提示詞模板
│       └── test/
├── README.md                     # 微服務(wù)整體說(shuō)明
└── .gitignore                    # 全局忽略文件

二、核心組件職責(zé)說(shuō)明(微服務(wù)特有)

組件名稱

核心職責(zé)

關(guān)鍵特點(diǎn)

demo-common

所有微服務(wù)的通用代碼,無(wú)業(yè)務(wù)邏輯

獨(dú)立 Jar 包,被網(wǎng)關(guān)、用戶、訂單等所有服務(wù)依賴

demo-gateway

微服務(wù)入口,負(fù)責(zé)路由轉(zhuǎn)發(fā)、統(tǒng)一鑒權(quán)、跨域、限流

無(wú)業(yè)務(wù)代碼,僅處理網(wǎng)關(guān)相關(guān)邏輯

demo-user-service

專注用戶業(yè)務(wù)(注冊(cè)、登錄、用戶信息管理)

獨(dú)立數(shù)據(jù)庫(kù),對(duì)外暴露 Feign 接口供訂單服務(wù)調(diào)用

demo-order-service

專注訂單業(yè)務(wù)(創(chuàng)建訂單、查詢訂單、調(diào)用用戶服務(wù)查用戶信息)

依賴用戶服務(wù) Feign,獨(dú)立數(shù)據(jù)庫(kù)

demo-ai-service

專注 AI 業(yè)務(wù)(對(duì)話、向量檢索)

無(wú)數(shù)據(jù)庫(kù)依賴,僅對(duì)接 AI 模型

三、單個(gè)微服務(wù)內(nèi)部分層(以用戶服務(wù)為例)

微服務(wù)整體目錄結(jié)構(gòu)(核心:按服務(wù)拆分,復(fù)用公共模塊)

demo-microservice/                # 微服務(wù)父工程(僅管理依賴版本)
├── pom.xml                       # 父POM:統(tǒng)一管理Spring Cloud、各依賴版本
├── demo-common/                  # 公共通用模塊(所有微服務(wù)復(fù)用)
│   ├── pom.xml
│   └── src/main/java/com/example/demo/common/
│       ├── constant/             # 全局常量(如狀態(tài)碼、通用枚舉)
│       ├── exception/            # 全局異常(業(yè)務(wù)異常、全局處理器)
│       ├── util/                 # 通用工具(日期、HTTP、Bean拷貝)
│       ├── config/               # 通用配置(Redis、跨域、Feign配置)
│       ├── dto/                  # 通用DTO(分頁(yè)、統(tǒng)一響應(yīng)體)
│       └── feign/                # Feign遠(yuǎn)程調(diào)用接口(給其他服務(wù)調(diào)用)
├── demo-gateway/                 # 網(wǎng)關(guān)微服務(wù)(統(tǒng)一入口、路由、鑒權(quán))
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/com/example/demo/gateway/
│       │   │   ├── DemoGatewayApplication.java # 網(wǎng)關(guān)啟動(dòng)類
│       │   │   ├── config/       # 網(wǎng)關(guān)配置(路由、跨域、過(guò)濾器)
│       │   │   ├── filter/       # 網(wǎng)關(guān)過(guò)濾器(token校驗(yàn)、日志)
│       │   │   └── handler/      # 網(wǎng)關(guān)異常處理
│       │   └── resources/
│       │       ├── application.yml
│       │       └── application-dev.yml
│       └── test/
├── demo-user-service/            # 用戶微服務(wù)(用戶相關(guān)業(yè)務(wù))
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/com/example/demo/user/
│       │   │   ├── DemoUserApplication.java # 用戶服務(wù)啟動(dòng)類
│       │   │   ├── controller/   # 用戶控制器(僅用戶接口)
│       │   │   ├── service/      # 用戶服務(wù)層(接口+實(shí)現(xiàn))
│       │   │   ├── mapper/       # 用戶數(shù)據(jù)訪問(wèn)層
│       │   │   ├── entity/       # 用戶實(shí)體(僅用戶相關(guān)表)
│       │   │   ├── dto/          # 用戶DTO(入?yún)?出參)
│       │   │   ├── config/       # 用戶服務(wù)專屬配置(MyBatis、MQ)
│       │   │   └── feign/        # 對(duì)外暴露的Feign接口(供其他服務(wù)調(diào)用)
│       │   └── resources/
│       │       ├── application.yml
│       │       ├── application-dev.yml
│       │       └── mapper/       # 用戶Mapper.xml
│       └── test/
├── demo-order-service/           # 訂單微服務(wù)(訂單相關(guān)業(yè)務(wù))
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/com/example/demo/order/
│       │   │   ├── DemoOrderApplication.java # 訂單服務(wù)啟動(dòng)類
│       │   │   ├── controller/   # 訂單控制器
│       │   │   ├── service/      # 訂單服務(wù)層(含調(diào)用用戶服務(wù)Feign)
│       │   │   ├── mapper/       # 訂單數(shù)據(jù)訪問(wèn)層
│       │   │   ├── entity/       # 訂單實(shí)體
│       │   │   ├── dto/          # 訂單DTO
│       │   │   └── config/       # 訂單服務(wù)專屬配置
│       │   └── resources/
│       │       ├── application.yml
│       │       ├── application-dev.yml
│       │       └── mapper/       # 訂單Mapper.xml
│       └── test/
├── demo-ai-service/              # AI微服務(wù)(可選,AI相關(guān)業(yè)務(wù))
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/com/example/demo/ai/
│       │   │   ├── DemoAiApplication.java # AI服務(wù)啟動(dòng)類
│       │   │   ├── controller/   # AI控制器
│       │   │   ├── service/      # AI服務(wù)層
│       │   │   ├── model/        # AI模型相關(guān)DTO
│       │   │   └── config/       # AI配置(OpenAI密鑰、模型參數(shù))
│       │   └── resources/
│       │       ├── application.yml
│       │       ├── application-dev.yml
│       │       └── ai_prompt/    # AI提示詞模板
│       └── test/
├── README.md                     # 微服務(wù)整體說(shuō)明
└── .gitignore                    # 全局忽略文件

二、核心組件職責(zé)說(shuō)明(微服務(wù)特有)

組件名稱

核心職責(zé)

關(guān)鍵特點(diǎn)

demo-common

所有微服務(wù)的通用代碼,無(wú)業(yè)務(wù)邏輯

獨(dú)立 Jar 包,被網(wǎng)關(guān)、用戶、訂單等所有服務(wù)依賴

demo-gateway

微服務(wù)入口,負(fù)責(zé)路由轉(zhuǎn)發(fā)、統(tǒng)一鑒權(quán)、跨域、限流

無(wú)業(yè)務(wù)代碼,僅處理網(wǎng)關(guān)相關(guān)邏輯

demo-user-service

專注用戶業(yè)務(wù)(注冊(cè)、登錄、用戶信息管理)

獨(dú)立數(shù)據(jù)庫(kù),對(duì)外暴露 Feign 接口供訂單服務(wù)調(diào)用

demo-order-service

專注訂單業(yè)務(wù)(創(chuàng)建訂單、查詢訂單、調(diào)用用戶服務(wù)查用戶信息)

依賴用戶服務(wù) Feign,獨(dú)立數(shù)據(jù)庫(kù)

demo-ai-service

專注 AI 業(yè)務(wù)(對(duì)話、向量檢索)

無(wú)數(shù)據(jù)庫(kù)依賴,僅對(duì)接 AI 模型

三、單個(gè)微服務(wù)內(nèi)部分層(以用戶服務(wù)為例)

每個(gè)微服務(wù)內(nèi)部仍遵循 Spring Boot 單項(xiàng)目的分層規(guī)范,保證自身完整性:

demo-user-service/src/main/java/com/example/demo/user/
├── DemoUserApplication.java      # 微服務(wù)啟動(dòng)類(加@SpringBootApplication、@EnableDiscoveryClient)
├── controller/UserController.java # 用戶接口(僅處理用戶相關(guān)請(qǐng)求)
├── service/
│   ├── UserService.java          # 用戶服務(wù)接口
│   └── impl/UserServiceImpl.java # 用戶服務(wù)實(shí)現(xiàn)
├── mapper/UserMapper.java        # 用戶Mapper(對(duì)接user表)
├── entity/User.java              # 用戶實(shí)體(僅映射user表)
├── dto/
│   ├── req/UserAddReqDTO.java    # 用戶新增入?yún)?
│   └── resp/UserInfoRespDTO.java # 用戶信息出參
├── config/MyBatisConfig.java     # 用戶服務(wù)專屬M(fèi)yBatis配置
└── feign/UserFeignClient.java    # 對(duì)外暴露的Feign接口(供訂單服務(wù)調(diào)用)

1. 父工程 pom.xml(核心:管理 Spring Cloud 版本)

<?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.example</groupId>
  <artifactId>demo-microservice</artifactId>
  <version>1.0.0</version>
  <packaging>pom</packaging>
  <name>demo-microservice</name>
  <!-- 子模塊聲明 -->
  <modules>
    <module>demo-common</module>
    <module>demo-gateway</module>
    <module>demo-user-service</module>
    <module>demo-order-service</module>
    <module>demo-ai-service</module>
  </modules>
  <!-- 版本管理:Spring Cloud & Spring Boot -->
  <properties>
    <spring.boot.version>3.2.0</spring.boot.version>
    <spring.cloud.version>2023.0.0</spring.cloud.version>
    <spring.cloud.alibaba.version>2023.0.1.0</spring.cloud.alibaba.version>
  </properties>
  <dependencyManagement>
    <dependencies>
      <!-- Spring Boot 依賴 -->
      <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-dependencies</artifactId>
        <version>${spring.boot.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <!-- Spring Cloud 依賴 -->
      <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-dependencies</artifactId>
        <version>${spring.cloud.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <!-- Spring Cloud Alibaba 依賴(可選) -->
      <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-alibaba-dependencies</artifactId>
        <version>${spring.cloud.alibaba.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <!-- 公共模塊依賴 -->
      <dependency>
        <groupId>com.example</groupId>
        <artifactId>demo-common</artifactId>
        <version>1.0.0</version>
      </dependency>
    </dependencies>
  </dependencyManagement>
</project>

2. 微服務(wù)啟動(dòng)類示例(用戶服務(wù))

package com.example.demo.user;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
/**
 * 用戶微服務(wù)啟動(dòng)類
 * @EnableDiscoveryClient:注冊(cè)到服務(wù)注冊(cè)中心(Nacos/Eureka)
 * @EnableFeignClients:開(kāi)啟Feign遠(yuǎn)程調(diào)用
 * @MapperScan:掃描Mapper接口
 */
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients(basePackages = "com.example.demo.common.feign")
@MapperScan("com.example.demo.user.mapper")
public class DemoUserApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoUserApplication.class, args);
    }
}

五、微服務(wù)目錄設(shè)計(jì)核心原則

  • 服務(wù)獨(dú)立:每個(gè)微服務(wù)是獨(dú)立的子工程,有自己的啟動(dòng)類、配置、數(shù)據(jù)庫(kù)(按需),可獨(dú)立部署、擴(kuò)容;
  • 復(fù)用優(yōu)先:通用代碼(工具、異常、常量)全部放到 demo-common,避免重復(fù)編寫;
  • 邊界清晰:每個(gè)微服務(wù)僅負(fù)責(zé)自身業(yè)務(wù)(如用戶服務(wù)只處理用戶,訂單服務(wù)只處理訂單),通過(guò) Feign 調(diào)用其他服務(wù);
  • 分層統(tǒng)一:每個(gè)微服務(wù)內(nèi)部仍遵循 “Controller→Service→Mapper→Entity” 分層,保持開(kāi)發(fā)規(guī)范一致。

總結(jié):

  • 整體結(jié)構(gòu):微服務(wù)以父工程為依賴入口,拆分為公共模塊、網(wǎng)關(guān)、各業(yè)務(wù)微服務(wù),每個(gè)微服務(wù)獨(dú)立且復(fù)用公共代碼;
  • 內(nèi)部規(guī)范:?jiǎn)蝹€(gè)微服務(wù)內(nèi)部保留 Spring Boot 經(jīng)典分層,保證業(yè)務(wù)邏輯清晰;
  • 核心特點(diǎn):服務(wù)解耦、獨(dú)立部署、通用代碼復(fù)用,符合微服務(wù) “高內(nèi)聚、低耦合” 的設(shè)計(jì)思想。

四、Spring MVC(Boot 整合)工程

1. 核心定位

基于 Spring Boot 整合 Spring MVC 框架,嚴(yán)格貼合 MVC(Model-View-Controller)分層設(shè)計(jì),支持前后端一體(返回視圖)或前后端分離(返回 JSON),是 Web 開(kāi)發(fā)的基礎(chǔ)架構(gòu),適配所有 Web 項(xiàng)目。

2. 完整目錄結(jié)構(gòu)

demo-mvc/                   # Spring Boot + MVC工程
├── src/
│   ├── main/
│   │   ├── java/
│   │   │   └── com/example/demo/
│   │   │       ├── DemoApplication.java  # 啟動(dòng)類
│   │   │       ├── controller/           # C層(Controller):接收請(qǐng)求
│   │   │       │   ├── UserController.java  # @Controller返回視圖 / @RestController返回JSON
│   │   │       │   └── OrderController.java
│   │   │       ├── service/              # M層(Model):業(yè)務(wù)邏輯
│   │   │       │   ├── UserService.java
│   │   │       │   └── impl/UserServiceImpl.java
│   │   │       ├── mapper/               # M層(Model):數(shù)據(jù)訪問(wèn)
│   │   │       │   └── UserMapper.java
│   │   │       ├── entity/               # M層(Model):數(shù)據(jù)模型
│   │   │       │   └── User.java
│   │   │       ├── dto/                  # M層擴(kuò)展:傳輸模型
│   │   │       │   ├── req/
│   │   │       │   └── resp/
│   │   │       └── config/               # MVC配置
│   │   │           └── WebMvcConfig.java # 自定義MVC規(guī)則(視圖解析器/靜態(tài)資源)
│   │   └── resources/                    # 資源目錄
│   │       ├── application.yml           # MVC核心配置(端口/視圖解析器)
│   │       ├── static/                   # 靜態(tài)資源(CSS/JS/圖片)
│   │       │   ├── css/
│   │       │   │   └── index.css
│   │       │   └── js/
│   │       │       └── index.js
│   │       └── templates/                # V層(View):視圖模板(Thymeleaf)
│   │           ├── user/
│   │           │   └── userInfo.html
│   │           └── index.html
│   └── test/
│       └── java/com/example/demo/
│           └── controller/
│               └── UserControllerTest.java
├── pom.xml                  # 核心依賴:spring-boot-starter-web(內(nèi)置Spring MVC)
├── README.md
└── .gitignore

MVC 分層與目錄的對(duì)應(yīng)關(guān)系(核心)

表格

MVC 分層

對(duì)應(yīng)目錄 / 類

核心作用

Controller(C 層)

controller/

接收前端請(qǐng)求,調(diào)用 Service,返回視圖 / JSON(Spring Boot 中 @RestController 返回 JSON,@Controller 返回視圖)

Model(M 層)

entity/

/dto/

/service/

數(shù)據(jù)模型(實(shí)體)+ 業(yè)務(wù)邏輯(Service)+ 數(shù)據(jù)訪問(wèn)(Mapper),是 MVC 的核心數(shù)據(jù)層

View(V 層)

resources/templates/

前端視圖頁(yè)面(Thymeleaf/Freemarker),前后端分離項(xiàng)目中此目錄可空

3. 核心配置(WebMvcConfig.java)

package com.example.demo.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.ViewResolverRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
/**
 * Spring MVC自定義配置(替代傳統(tǒng)XML)
 */
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
    // 配置視圖解析器(前后端一體場(chǎng)景)
    @Override
    public void configureViewResolvers(ViewResolverRegistry registry) {
        registry.thymeleaf()
                .prefix("classpath:/templates/")  // 視圖前綴
                .suffix(".html");                 // 視圖后綴
    }
    // 配置靜態(tài)資源訪問(wèn)(放行static目錄)
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/static/**")
                .addResourceLocations("classpath:/static/");
    }
}

4. 核心特點(diǎn)

  • 嚴(yán)格貼合 MVC 分層:C 層 = controller 目錄,M 層 = service/mapper/entity,V 層 = templates 目錄;
  • 核心依賴是spring-boot-starter-web(內(nèi)置 Spring MVC 核心組件 DispatcherServlet);
  • 前后端一體場(chǎng)景:Controller 用@Controller,返回視圖名稱(如return "user/userInfo");
  • 前后端分離場(chǎng)景:Controller 用@RestController,返回 JSON,可刪除 templates 目錄;
  • 通過(guò)WebMvcConfig自定義 MVC 規(guī)則(視圖解析器、靜態(tài)資源、攔截器),替代傳統(tǒng) XML 配置。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java最長(zhǎng)公共子序列示例源碼

    Java最長(zhǎng)公共子序列示例源碼

    這篇文章主要介紹了Java最長(zhǎng)公共子序列的定義及示例源代碼,具有一定參考價(jià)值,需要的朋友可以看下。
    2017-09-09
  • Java創(chuàng)建多線程局域網(wǎng)聊天室實(shí)例

    Java創(chuàng)建多線程局域網(wǎng)聊天室實(shí)例

    這篇文章主要介紹了Java創(chuàng)建多線程局域網(wǎng)聊天室實(shí)例,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • Java程序運(yùn)行時(shí)出現(xiàn)亂碼問(wèn)題的排查與解決方法

    Java程序運(yùn)行時(shí)出現(xiàn)亂碼問(wèn)題的排查與解決方法

    本文主要介紹了Java程序運(yùn)行時(shí)出現(xiàn)亂碼問(wèn)題的排查與解決方法,包括檢查Java源文件編碼、檢查編譯時(shí)的編碼設(shè)置、檢查運(yùn)行時(shí)的編碼設(shè)置、檢查命令提示符的代碼頁(yè)、檢查命令提示符的字體、檢查 Java 程序的輸出代碼以及檢查環(huán)境變量,需要的朋友可以參考下
    2025-03-03
  • JAVA中關(guān)于多線程的使用詳解

    JAVA中關(guān)于多線程的使用詳解

    本文給大家介紹JAVA中關(guān)于多線程的使用詳解,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2025-09-09
  • 深入理解Java設(shè)計(jì)模式之裝飾模式

    深入理解Java設(shè)計(jì)模式之裝飾模式

    這篇文章主要介紹了JAVA設(shè)計(jì)模式之裝飾模式的的相關(guān)資料,文中示例代碼非常詳細(xì),供大家參考和學(xué)習(xí),感興趣的朋友可以了解下
    2021-11-11
  • Java中處理I/O操作的不同方式

    Java中處理I/O操作的不同方式

    BIO、NIO和AIO是Java中處理I/O操作的三種不同方式,它們分別代表阻塞I/O、非阻塞I/O和異步I/O,本文我們結(jié)合代碼進(jìn)行一個(gè)綜合演示,代碼由于是偽代碼,可能存在不足,僅供大家參考
    2024-02-02
  • SpringBoot整合XXLJob的實(shí)現(xiàn)示例

    SpringBoot整合XXLJob的實(shí)現(xiàn)示例

    XXLJob是大眾點(diǎn)評(píng)開(kāi)源的分布式任務(wù)調(diào)度平臺(tái),支持Cron、固定間隔等觸發(fā)方式,本文主要介紹了SpringBoot整合XXLJob的實(shí)現(xiàn)示例,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-09-09
  • 新手小白學(xué)JAVA IDEA下載使用手冊(cè)全集

    新手小白學(xué)JAVA IDEA下載使用手冊(cè)全集

    IDEA的每一個(gè)方面都是為了最大限度地提高開(kāi)發(fā)人員的工作效率而設(shè)計(jì)的,它的智能編碼輔助和人機(jī)工程學(xué)設(shè)計(jì)會(huì)讓開(kāi)發(fā)過(guò)程變得愉悅且高效,今天給大家分享新手小白學(xué)JAVA IDEA下載使用手冊(cè)全集,對(duì)idea新手使用相關(guān)知識(shí)感興趣的朋友跟隨小編一起學(xué)習(xí)吧
    2021-05-05
  • 解析spring加載bean流程的方法

    解析spring加載bean流程的方法

    這篇文章主要介紹了解析spring加載bean流程的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • 關(guān)于@MapperScan和@ComponentScan的使用問(wèn)題

    關(guān)于@MapperScan和@ComponentScan的使用問(wèn)題

    文章介紹了在使用`@MapperScan`和`@ComponentScan`時(shí)可能會(huì)遇到的包掃描沖突問(wèn)題,并提供了解決方法,同時(shí),還詳細(xì)解釋了`@MapperScan`和`@ComponentScan`的功能和使用場(chǎng)景
    2025-01-01

最新評(píng)論

浪卡子县| 获嘉县| 衡阳市| 福海县| 吴江市| 讷河市| 哈巴河县| 壶关县| 白玉县| 科技| 霍邱县| 个旧市| 乃东县| 井研县| 太保市| 大埔县| 曲松县| 天峨县| 绥中县| 满城县| 龙江县| 会东县| 长宁县| 东至县| 芦溪县| 应城市| 阳春市| 广平县| 南郑县| 清水河县| 平谷区| 福泉市| 罗甸县| 平阴县| 阿图什市| 民权县| 宁武县| 四平市| 铜梁县| 临海市| 平山县|