Spring中@Service注解的作用與@Controller和@RestController之間區(qū)別
一、@Service注解
@Service注解用于類上,標(biāo)記當(dāng)前類是一個service類,加上該注解會將當(dāng)前類自動注入到spring容器中,不需要再在applicationContext.xml文件定義bean了。在Controller模塊中可以通過@Autowired注入service類。直接調(diào)用service類中方法。
@Service @Primary public class YtDesignInfoServiceImpl implements YtDesignInfoService { @Autowired private YtDesignInfoMapper ytDesignInfoMapper; @Override public YtDesignInfo getItem(String GCID){ YtDesignInfoExample example = new YtDesignInfoExample(); YtDesignInfoExample.Criteria criteria = example.createCriteria(); criteria.andLProjectidEqualTo(GCID); List<YtDesignInfo> ytDesignInfos = ytDesignInfoMapper.selectByExample(example); return ytDesignInfos.get(0); } }
@RestController @Api(tags = "YantuController", value = "巖土管理") @RequestMapping("/yantu") public class YanTuController { @Autowired private YtDesignInfoService ytDesignInfoService; @Autowired private YtDuanmianService ytDuanmianService; @ApiOperation(value = "新增巖土成果的工程信息") @PostMapping(value = "/addYanTuItemInfo") public CommonResult<?> addYanTuInfo(Principal principal, @Validated YtDesignInfo ytDesignInfo) { if (principal == null) { return CommonResult.unauthorized(null); } int i = ytDesignInfoService.addItem(ytDesignInfo); if (i>0) { return CommonResult.success("上傳成功"); } else { return CommonResult.failed("上傳失敗"); } } }
二、@Controller和@RestController的區(qū)別
1. @controller注解
- @Controller 將當(dāng)前修飾的類注入SpringBoot IOC容器,使得從該類所在的項目跑起來的過程中,這個類就被實例化。當(dāng)然也有語義化的作用,即代表該類是充當(dāng)Controller的作用。
- @ResponseBody 它的作用簡短截說就是指該類中所有的API接口返回的數(shù)據(jù),甭管你對應(yīng)的方法返回Map或是其他Object,它會以Json字符串的形式返回給客戶端,本人嘗試了一下,如果返回的是String類型,則仍然是String。
- 假如返回類型是Map類型,但是沒有加@ResponseBody注解,只有@Controller修飾的時候,Spring以為會返回一個View(也就是MVC中的那C)但是返回的東西卻是一個Map,頁面會報錯。
@Controller public class FileUploadController { //跳轉(zhuǎn)到上傳文件的頁面 //在對應(yīng)的方法上,視圖解析器可以解析return 的jsp,html頁面,并且跳轉(zhuǎn)到相應(yīng)頁面。 @RequestMapping(value="/gouploadimg", method = RequestMethod.GET) public String goUploadImg() { //跳轉(zhuǎn)到 templates 目錄下的 uploadimg.html return "uploadimg"; } //處理文件上傳 //若返回json等內(nèi)容到頁面,則需要加@ResponseBody注解 //如果返回的是String類型,則仍然是String。 @RequestMapping(value="/testuploadimg", method = RequestMethod.POST) @ResponseBody public String uploadImg(@RequestParam("file") MultipartFile file,HttpServletRequest request) { System.out.println("調(diào)用文件上傳方法"); String contentType = file.getContentType(); String fileName = file.getOriginalFilename(); return filename; } }
2. @RestController注解
相當(dāng)于@Controller+@ResponseBody兩個注解的結(jié)合,返回json數(shù)據(jù)不需要在方法前面加@ResponseBody注解了,但使用@RestController這個注解,就不能返回jsp,html頁面,視圖解析器無法解析jsp,html頁面
@RestController /* @Controller + @ResponseBody*/ public class HospitalController { //注入Service服務(wù)對象 @Autowired private HospitalService hospitalService; /** * 查詢所有醫(yī)院信息(未分頁) */ //@RestController注解可以直接返回json數(shù)據(jù) //@Controller注解無法返回json數(shù)據(jù) @RequestMapping(value = "findAllHospital",method = RequestMethod.GET) public List<Hospital> findAllHospital(){ List<Hospital> hospitalList= hospitalService.findAllHospital(); return hospitalList; } }
到此這篇關(guān)于Spring中@Service注解的作用與@Controller和@RestController之間區(qū)別的文章就介紹到這了,更多相關(guān)Spring @Service注解作用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java性能優(yōu)化之關(guān)于大對象復(fù)用的目標(biāo)和注意點
這篇文章主要介紹了Java性能優(yōu)化之關(guān)于大對象復(fù)用的目標(biāo)和注意點,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-03-03SpringBoot加載多個配置文件實現(xiàn)dev、product多環(huán)境切換的方法
這篇文章主要介紹了SpringBoot加載多個配置文件實現(xiàn)dev、product多環(huán)境切換,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-03-03Springboot實現(xiàn)通用Auth認證的幾種方式
本文主要介紹了Springboot實現(xiàn)通用Auth認證的幾種方式,主要介紹了4種方式,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-07-07淺談web服務(wù)器項目中靜態(tài)請求和動態(tài)請求處理
這篇文章主要介紹了淺談web服務(wù)器項目中靜態(tài)請求和動態(tài)請求處理,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07關(guān)于Java集合框架Collection接口詳解
這篇文章主要介紹了關(guān)于Java集合框架Collection接口詳解,Collection接口是Java集合框架中的基礎(chǔ)接口,定義了一些基本的集合操作,包括添加元素、刪除元素、遍歷集合等,需要的朋友可以參考下2023-05-05