本次介紹SpringBoot中針對(duì)http的常用注解揩瞪。SpringBoot之所以在現(xiàn)階段從Spring全家桶中脫穎而出,不僅是其號(hào)稱“輕量級(jí)”,在實(shí)際工作中隆檀,工程師也會(huì)發(fā)現(xiàn)大量的SpringMVC中配置文件工作,由注解替代。作為優(yōu)質(zhì)的服務(wù)端Java框架恐仑,今天著重介紹SpringBoot中與http請(qǐng)求相關(guān)的注解泉坐。
SpringBoot仍然秉承MVC的架構(gòu),在注解命名方面遵循此類講究裳仆,對(duì)于負(fù)責(zé)Restful API交互的功能模塊腕让,SpingBoot采用@RestController在修飾類
@RestController
@RestController = @Controller + @ResponseBody組成,等號(hào)右邊兩位同志簡(jiǎn)單介紹兩句歧斟,就明白我們@RestController的意義了:
- @Controller 將當(dāng)前修飾的類注入SpringBoot IOC容器纯丸,使得從該類所在的項(xiàng)目跑起來(lái)的過(guò)程中,這個(gè)類就被實(shí)例化静袖。當(dāng)然也有語(yǔ)義化的作用觉鼻,即代表該類是充當(dāng)Controller的作用
- @ResponseBody 它的作用簡(jiǎn)短截說(shuō)就是指該類中所有的API接口返回的數(shù)據(jù),甭管你對(duì)應(yīng)的方法返回Map或是其他Object队橙,它會(huì)以Json字符串的形式返回給客戶端坠陈,本人嘗試了一下,如果返回的是String類型捐康,則仍然是String仇矾。
@RestController
@RequestMapping("test")
public class SampleController {
@GetMapping
public Map testGet() {
return new HashMap<String, String>(){{
put("name", "springboot");
}};
}
@GetMapping(path = "str")
public String testGetStr() {
return "OK";
}
}
這部分代碼對(duì)于Map返回則是JSON String,對(duì)于String則仍然是String
對(duì)于Map的返回為JSON類型字符串
對(duì)于String的返回仍為String
當(dāng)將@RestController換成@Controller之后解总,對(duì)于/test的返回值如下圖:
@Controller修飾后
從報(bào)錯(cuò)可以看見(jiàn)若未,當(dāng)@Controller修飾的時(shí)候,Spring以為會(huì)返回一個(gè)View(也就是MVC中的那C)但是返回的東西卻是一個(gè)Map倾鲫。