本次介紹SpringBoot中針對(duì)http的常用注解。SpringBoot之所以在現(xiàn)階段從Spring全家桶中脫穎而出,不僅是其號(hào)稱(chēng)“輕量級(jí)”,在實(shí)際工作中,工程師也會(huì)發(fā)現(xiàn)大量的SpringMVC中配置文件工作,由注解替代。作為優(yōu)質(zhì)的服務(wù)端Java框架,今天著重介紹SpringBoot中與http請(qǐng)求相關(guān)的注解。
SpringBoot仍然秉承MVC的架構(gòu),在注解命名方面遵循此類(lèi)講究,對(duì)于負(fù)責(zé)Restful API交互的功能模塊,SpingBoot采用@RestController在修飾類(lèi)
@RestController
@RestController = @Controller + @ResponseBody組成,等號(hào)右邊兩位同志簡(jiǎn)單介紹兩句,就明白我們@RestController的意義了:
- @Controller 將當(dāng)前修飾的類(lèi)注入SpringBoot IOC容器,使得從該類(lèi)所在的項(xiàng)目跑起來(lái)的過(guò)程中,這個(gè)類(lèi)就被實(shí)例化。當(dāng)然也有語(yǔ)義化的作用,即代表該類(lèi)是充當(dāng)Controller的作用
- @ResponseBody 它的作用簡(jiǎn)短截說(shuō)就是指該類(lèi)中所有的API接口返回的數(shù)據(jù),甭管你對(duì)應(yīng)的方法返回Map或是其他Object,它會(huì)以Json字符串的形式返回給客戶(hù)端,本人嘗試了一下,如果返回的是String類(lèi)型,則仍然是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類(lèi)型字符串

對(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。