SpringBoot項(xiàng)目中各層的關(guān)系及作用說明
一、Controller(控制層)
顧名思義,業(yè)務(wù)控制,就是控制業(yè)務(wù)層Service的,它的作用主要是架起了外界與業(yè)務(wù)層溝通的橋梁,移動(dòng)端,前端在調(diào)用接口訪問相關(guān)業(yè)務(wù)時(shí),都會(huì)通過Controller,由Controller去調(diào)相關(guān)的業(yè)務(wù)層代碼并把數(shù)據(jù)返回給移動(dòng)端和前端。
特點(diǎn):
- Controller層為控制層,一般使用 @RestController 或 @Controller 注解來標(biāo)識(shí)。
- 在 Spring Boot 中,控制層負(fù)責(zé)接收請(qǐng)求并將請(qǐng)求轉(zhuǎn)發(fā)到相應(yīng)的服務(wù)層進(jìn)行處理,同時(shí)將處理結(jié)果返回給客戶端。
- 導(dǎo)入service層,調(diào)用你service方法,controller通過接收前端傳來的參數(shù)進(jìn)行業(yè)務(wù)操作,在返回一個(gè)指定的路徑或數(shù)據(jù)表。
二、Service(業(yè)務(wù)管理層)
業(yè)務(wù)層,所有的內(nèi)部的業(yè)務(wù)邏輯都會(huì)放在這里處理,比如用戶的增刪改查,或者發(fā)送個(gè)驗(yàn)證碼或郵件,或者做一個(gè)抽獎(jiǎng)活動(dòng)等等等等,都會(huì)在Service中進(jìn)行,當(dāng)然,業(yè)務(wù)離肯定是離不開數(shù)據(jù)的支持,因此是必不可少的。
特點(diǎn):
- Service層為服務(wù)層,一般使用 @Service 注解來標(biāo)識(shí)。
- 在 Spring Boot 中,服務(wù)層負(fù)責(zé)實(shí)現(xiàn)業(yè)務(wù)邏輯。它們相當(dāng)于一系列操作的組合,常見的操作有查詢、修改、刪除等。
- 不直接對(duì)數(shù)據(jù)庫進(jìn)行操作,有接口和接口實(shí)現(xiàn)類,提供controller層調(diào)用方法
三、Dao(Mapper層)
數(shù)據(jù)持久化層,就是和數(shù)據(jù)庫打交道的,而實(shí)現(xiàn)持久化層的框架又有很多,而常用的有兩種:JPA和MyBatis,JPA是SpringBoot官方的,前身就是著名的三大框架之一的Hibernate,好處是不用手寫SQL(當(dāng)然它也支持手寫,如果必要的話),國外用的比較多,而MyBatis則在國內(nèi)比較流行,原因是它的靈活性非常高,但是需要手寫SQL語句。
特點(diǎn):
- Dao層為數(shù)據(jù)訪問層,數(shù)據(jù)訪問層通常使用 JPA 或 MyBatis 等 ORM 框架來簡化數(shù)據(jù)庫操作。
- 在 Spring Boot 中,數(shù)據(jù)訪問層是與數(shù)據(jù)庫進(jìn)行交互的層次,負(fù)責(zé)對(duì)數(shù)據(jù)庫進(jìn)行增刪改查等操作。
- 針對(duì)數(shù)據(jù)庫操作,基本上用的就是增刪改查,就是一個(gè)接口,只有方法名,具體實(shí)現(xiàn)在mapper.xml中
四、Entity(實(shí)體層)
實(shí)體層主要用于定義業(yè)務(wù)領(lǐng)域中的實(shí)體對(duì)象,比如用戶、產(chǎn)品、訂單等。這些實(shí)體類通常包含屬性、方法和與數(shù)據(jù)庫表字段的映射關(guān)系,用于封裝和操作數(shù)據(jù)。
- entity層為實(shí)體層,實(shí)體層一般使用 @Entity 注解來標(biāo)識(shí)。
- 在 Spring Boot 中,實(shí)體層負(fù)責(zé)表示具體的數(shù)據(jù)模型。這些模型映射到數(shù)據(jù)庫中的表結(jié)構(gòu)。它們包含所有操作此實(shí)體類對(duì)象的方法,比如查詢、添加、刪除等。
- 存放的是實(shí)體類,屬性值與數(shù)據(jù)庫值保持一致,實(shí)現(xiàn)setter和getter方法
注:也有不同的寫的是四層,即controller層、service層、dao層和entity層
五、configuration(配置層)
配置層在Spring Boot應(yīng)用程序中扮演著至關(guān)重要的角色。它負(fù)責(zé)管理應(yīng)用程序的配置信息,并提供對(duì)各種配置選項(xiàng)的靈活性和可定制性。(其在運(yùn)行程序的時(shí)候會(huì)優(yōu)先加載)
- Configuration層為配置層,配置層一般使用 @Configuration 注解來標(biāo)識(shí)。
- 在 Spring Boot 中,配置層是整個(gè)系統(tǒng)的配置中心,負(fù)責(zé)定義和管理 Spring Boot 應(yīng)用程序的配置信息。
六、Utils(工具層)
- Utils層為工具類層,可以自定義工具類,并使用 @Component 注解將其注入到容器中。
- 在 Spring Boot 中,工具類層負(fù)責(zé)封裝一些常用的工具方法,例如日期格式化、加密解密等。
七、架構(gòu)圖例和圖解
----------------------------------------- | Presentation Layer | ----------------------------------------- | Web Controllers | ----------------------------------------- | | ----------------------------------------- | Service Layer | ----------------------------------------- | Business Services | ----------------------------------------- | | ----------------------------------------- | Data Access Layer | ----------------------------------------- | Repositories | | ORM Framework | | Database | ----------------------------------------- | | ----------------------------------------- | Utility Layer | ----------------------------------------- | Utility/Helper Classes | -----------------------------------------

?總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- SpringBoot項(xiàng)目docker分層鏡像構(gòu)建案例
- SpringBoot項(xiàng)目中Controller層代碼編寫規(guī)范整理方式
- SpringCloud+SpringBoot項(xiàng)目搭建結(jié)構(gòu)層次的實(shí)例
- SpringBoot頂層接口實(shí)現(xiàn)類注入項(xiàng)目的方法示例
- springboot項(xiàng)目docker分層構(gòu)建的配置方式
- springboot項(xiàng)目中controller層與前端的參數(shù)傳遞方式
- java報(bào)錯(cuò)之springboot3+vue2項(xiàng)目web服務(wù)層報(bào)錯(cuò)總結(jié)
- SpringBoot項(xiàng)目多層級(jí)多環(huán)境yml設(shè)計(jì)詳解
- springboot項(xiàng)目完整后端請(qǐng)求Controller層優(yōu)雅處理
相關(guān)文章
IDEA創(chuàng)建SpringBoot項(xiàng)目整合mybatis時(shí)mysql-connector-java報(bào)錯(cuò)異常的詳細(xì)分析
最近工作中發(fā)現(xiàn)了個(gè)錯(cuò)誤,分享給同樣遇到這個(gè)問題的朋友,這篇文章主要給大家介紹了關(guān)于IDEA創(chuàng)建SpringBoot項(xiàng)目整合mybatis時(shí)mysql-connector-j報(bào)錯(cuò)異常的詳細(xì)分析,需要的朋友可以參考下2023-02-02
Maven-3.6.1下載與環(huán)境搭建(解決IDEA兼容問題)及其配置教程
本文介紹了如何解決Maven 3.6.1及以上版本在IDEA中使用時(shí)自動(dòng)導(dǎo)包出現(xiàn)紅色報(bào)錯(cuò)的問題,并詳細(xì)講解了如何下載、配置和使用Maven2026-02-02
SpringBoot中使用MyBatis-Plus實(shí)現(xiàn)分頁接口的詳細(xì)教程
MyBatis-Plus是一個(gè)MyBatis的增強(qiáng)工具,在MyBatis的基礎(chǔ)上只做增強(qiáng)不做改變,為簡化開發(fā)、提高效率而生,在SpringBoot項(xiàng)目中使用MyBatis-Plus可以大大簡化分頁邏輯的編寫,本文將介紹如何在 SpringBoot項(xiàng)目中使用MyBatis-Plus實(shí)現(xiàn)分頁接口2024-03-03
springboot實(shí)現(xiàn)rtsp視頻推流的示例代碼
本文指導(dǎo)通過Docker搭建RTSP服務(wù),配置Maven依賴,創(chuàng)建RtspStreamer類并測(cè)試流地址rtsp://localhost:8554/live的實(shí)現(xiàn)過程,感興趣的可以了解一下2025-07-07
SpringBoot攔截器實(shí)現(xiàn)登錄攔截的方法示例
這篇文章主要介紹了SpringBoot攔截器實(shí)現(xiàn)登錄攔截的方法示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09
詳談jpa中表的@OneToMany等關(guān)聯(lián)關(guān)系
這篇文章主要介紹了詳談jpa中表的@OneToMany等關(guān)聯(lián)關(guān)系,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12
【IntelliJ IDEA】Maven構(gòu)建自己的第一個(gè)Java后臺(tái)的方法
本篇文章主要介紹了Maven構(gòu)建自己的第一個(gè)Java后臺(tái)的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-12-12

