Java中 Controller、Service、Dao/Mapper層的區(qū)別與用法
在Java開發(fā)中,通常會(huì)采用三層架構(gòu)(或稱MVC架構(gòu))來劃分程序的職責(zé)和功能,分別是Controller層、Service層、Dao/Mapper層。
1、Service層:業(yè)務(wù)層–>控制業(yè)務(wù)
業(yè)務(wù)模塊的邏輯功能設(shè)計(jì),和DAO層一樣都是先設(shè)計(jì)接口,再創(chuàng)建要實(shí)現(xiàn)的類,然后在配置文件中進(jìn)行配置其實(shí)現(xiàn)的關(guān)聯(lián)。接下來就可以在service層調(diào)用接口進(jìn)行業(yè)務(wù)邏輯應(yīng)用的處理。
好處:封裝Service層的業(yè)務(wù)邏輯有利于業(yè)務(wù)邏輯的獨(dú)立性和重復(fù)利用性。
2、Controller層:控制層–>調(diào)用業(yè)務(wù)層方法來控制業(yè)務(wù)邏輯
controller層主要調(diào)用Service層里面的接口來控制具體的業(yè)務(wù)流程,控制層的配置也要在配置文件中進(jìn)行。
Controller和Service的區(qū)別是:Controller負(fù)責(zé)具體的業(yè)務(wù)模塊流程的控制;Service層負(fù)責(zé)業(yè)務(wù)模塊的邏輯應(yīng)用設(shè)計(jì)
3、Dao/Mapper層:持久層,主要與數(shù)據(jù)庫交互
Dao層首先會(huì)創(chuàng)建Dao接口,接著就可以在配置文件中定義該接口的實(shí)現(xiàn)類;然后就可以在模塊中調(diào)用Dao的接口進(jìn)行數(shù)據(jù)業(yè)務(wù)的處理,而不用關(guān)注此接口的具體實(shí)現(xiàn)類是哪一個(gè)類,Dao層的數(shù)據(jù)源和數(shù)據(jù)庫連接的參數(shù)都是在配置文件中進(jìn)行配置的。
以下是更專業(yè)的詳解
Controller層
Controller層是Java Web應(yīng)用程序里面的控制層,主要負(fù)責(zé)接收客戶端發(fā)送的請(qǐng)求、調(diào)度Service層的各個(gè)方法,并將處理的結(jié)果返回給客戶端。同時(shí),Controller層也可以對(duì)請(qǐng)求參數(shù)進(jìn)行校驗(yàn),防止錯(cuò)誤數(shù)據(jù)的處理和提交。
Controller層主要使用 Spring MVC 相關(guān)的注解來映射請(qǐng)求和處理請(qǐng)求結(jié)果。例如,@RequestMapping
注解用于配置基于請(qǐng)求URL的映射,@Controller
注解用于標(biāo)識(shí)該類為控制器類,@ResponseBody
注解用于將返回結(jié)果序列化成JSON等格式返回給客戶端。
Service層
Service層是Java Web應(yīng)用程序里面的業(yè)務(wù)邏輯層,主要負(fù)責(zé)處理業(yè)務(wù)邏輯、實(shí)現(xiàn)數(shù)據(jù)校驗(yàn)、事務(wù)控制、權(quán)限控制等方面。Service層通過調(diào)用Dao/Mapper層的接口來操作數(shù)據(jù)庫,以完成具體的業(yè)務(wù)目標(biāo)。
為了能夠?qū)崿F(xiàn)業(yè)務(wù)邏輯的獨(dú)立性和可重用性,Service層通常采用接口+實(shí)現(xiàn)類的方式進(jìn)行開發(fā)。Service層主要使用@Autowired
注解來注入Dao/Mapper層的實(shí)例,并使用@Transactional
注解來定義事務(wù)。
Dao/Mapper層
Dao/Mapper層是Java Web應(yīng)用程序里面的數(shù)據(jù)訪問層,主要負(fù)責(zé)與數(shù)據(jù)庫進(jìn)行交互,進(jìn)行數(shù)據(jù)讀取、寫入、修改、刪除等操作。Dao/Mapper層通常使用Spring Data JPA、MyBatis等開源框架進(jìn)行ORM操作。
在Dao/Mapper層中通常有一個(gè)Java接口和一個(gè)對(duì)應(yīng)的XML文件(或注解方式進(jìn)行映射),用于定義SQL語句,以完成數(shù)據(jù)的增、刪、改、查操作。Dao/Mapper層中的方法會(huì)由Service層來調(diào)用,通過調(diào)用SQL語句來完成與數(shù)據(jù)庫的交互。文章來源:http://www.zghlxwxcb.cn/news/detail-459695.html
總之,Controller、Service、Dao/Mapper層是Java Web應(yīng)用程序中常用的三層架構(gòu),分別負(fù)責(zé)接收請(qǐng)求、處理業(yè)務(wù)邏輯和與數(shù)據(jù)庫交互。合理地劃分和組織這三層的代碼,可以簡化程序的開發(fā)和維護(hù),提高代碼的可重用性和可維護(hù)性。文章來源地址http://www.zghlxwxcb.cn/news/detail-459695.html
到了這里,關(guān)于Java中 Controller、Service、Dao/Mapper層的區(qū)別與用法的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!