Java中Controller、Service、Dao/Mapper層的區(qū)別與用法
1、Service層:業(yè)務(wù)層–>控制業(yè)務(wù)
業(yè)務(wù)模塊的邏輯功能設(shè)計,和DAO層一樣都是先設(shè)計接口,再創(chuàng)建要實現(xiàn)的類,然后在配置文件中進行配置其實現(xiàn)的關(guān)聯(lián)。接下來就可以在service層調(diào)用接口進行業(yè)務(wù)邏輯應(yīng)用的處理。
好處:封裝Service層的業(yè)務(wù)邏輯有利于業(yè)務(wù)邏輯的獨立性和重復(fù)利用性。
2、Controller層:控制層–>調(diào)用業(yè)務(wù)層方法來控制業(yè)務(wù)邏輯
controller層主要調(diào)用Service層里面的接口來控制具體的業(yè)務(wù)流程,控制層的配置也要在配置文件中進行。
Controller和Service的區(qū)別是:Controller負(fù)責(zé)具體的業(yè)務(wù)模塊流程的控制;Service層負(fù)責(zé)業(yè)務(wù)模塊的邏輯應(yīng)用設(shè)計
3、Dao/Mapper層:持久層,主要與數(shù)據(jù)庫交互
Dao層首先會創(chuàng)建Dao接口,接著就可以在配置文件中定義該接口的實現(xiàn)類;然后就可以在模塊中調(diào)用Dao的接口進行數(shù)據(jù)業(yè)務(wù)的處理,而不用關(guān)注此接口的具體實現(xiàn)類是哪一個類,Dao層的數(shù)據(jù)源和數(shù)據(jù)庫連接的參數(shù)都是在配置文件中進行配置的。
以下是更專業(yè)的詳解
Controller層
Controller層是Java Web應(yīng)用程序里面的控制層,主要負(fù)責(zé)接收客戶端發(fā)送的請求、調(diào)度Service層的各個方法,并將處理的結(jié)果返回給客戶端。同時,Controller層也可以對請求參數(shù)進行校驗,防止錯誤數(shù)據(jù)的處理和提交。
Controller層主要使用 Spring MVC 相關(guān)的注解來映射請求和處理請求結(jié)果。例如,@RequestMapping注解用于配置基于請求URL的映射,@Controller注解用于標(biāo)識該類為控制器類,@ResponseBody注解用于將返回結(jié)果序列化成JSON等格式返回給客戶端。
Service層
Service層是Java Web應(yīng)用程序里面的業(yè)務(wù)邏輯層,主要負(fù)責(zé)處理業(yè)務(wù)邏輯、實現(xiàn)數(shù)據(jù)校驗、事務(wù)控制、權(quán)限控制等方面。Service層通過調(diào)用Dao/Mapper層的接口來操作數(shù)據(jù)庫,以完成具體的業(yè)務(wù)目標(biāo)。
為了能夠?qū)崿F(xiàn)業(yè)務(wù)邏輯的獨立性和可重用性,Service層通常采用接口+實現(xiàn)類的方式進行開發(fā)。Service層主要使用@Autowired注解來注入Dao/Mapper層的實例,并使用@Transactional注解來定義事務(wù)。
Dao/Mapper層
Dao/Mapper層是Java Web應(yīng)用程序里面的數(shù)據(jù)訪問層,主要負(fù)責(zé)與數(shù)據(jù)庫進行交互,進行數(shù)據(jù)讀取、寫入、修改、刪除等操作。Dao/Mapper層通常使用Spring Data JPA、MyBatis等開源框架進行ORM操作。
在Dao/Mapper層中通常有一個Java接口和一個對應(yīng)的XML文件(或注解方式進行映射),用于定義SQL語句,以完成數(shù)據(jù)的增、刪、改、查操作。Dao/Mapper層中的方法會由Service層來調(diào)用,通過調(diào)用SQL語句來完成與數(shù)據(jù)庫的交互。
總之,Controller、Service、Dao/Mapper層是Java Web應(yīng)用程序中常用的三層架構(gòu),分別負(fù)責(zé)接收請求、處理業(yè)務(wù)邏輯和與數(shù)據(jù)庫交互。合理地劃分和組織這三層的代碼,可以簡化程序的開發(fā)和維護,提高代碼的可重用性和可維護性。
到此這篇關(guān)于Java中Controller、Service、Dao/Mapper層的區(qū)別與用法的文章就介紹到這了,更多相關(guān)Java 層的區(qū)別與用法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot Swagger2 接口規(guī)范示例詳解
Swagger(在谷歌、IBM、微軟等公司的支持下)做了一個公共的文檔風(fēng)格來填補上述問題,在本文中,我們將會學(xué)習(xí)怎么使用Swagger的 Swagger2注解去生成REST API文檔,感興趣的朋友一起看看吧2023-12-12
java實現(xiàn)數(shù)字轉(zhuǎn)換人民幣中文大寫工具
這篇文章主要為大家詳細(xì)介紹了java實現(xiàn)數(shù)字轉(zhuǎn)換人民幣中文大寫工具,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-04-04
MyBatis-Plus動態(tài)表名使用selectPage方法不生效問題解析與解決方案
MyBatis-Plus是MyBatis的增強工具,動態(tài)表名是MyBatis-Plus的一個重要功能之一,一些開發(fā)者在使用selectPage方法時可能會遇到動態(tài)表名不生效的問題,本文將深入分析這個問題的原因,并提供相應(yīng)的解決方案,需要的朋友可以參考下2023-12-12
AsyncHttpClient?RequestFilter請求篩選源碼解讀
這篇文章主要為大家介紹了AsyncHttpClient?RequestFilter請求篩選源碼解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-12-12

