@Controller
和 @RestController
是 Spring MVC 中用于處理 HTTP 請(qǐng)求的注解,它們有以下區(qū)別:
-
返回值處理方式:
-
@Controller
用于定義一個(gè)傳統(tǒng)的 Spring MVC 控制器,它的方法通常返回視圖名稱或ModelAndView
對(duì)象,由視圖解析器解析并渲染成 HTML 頁(yè)面。@Controller public class MyController { @GetMapping("/hello") public String hello() { return "helloPage"; // 返回視圖名稱 } }
-
@RestController
組合了@Controller
和@ResponseBody
,用于定義 RESTful 風(fēng)格的控制器。其方法的返回值會(huì)直接寫入 HTTP 響應(yīng)體,而不是通過(guò)視圖解析器解析為視圖。@RestController public class MyRestController { @GetMapping("/api/hello") public String hello() { return "Hello, REST API!"; // 直接寫入響應(yīng)體 } }
-
-
默認(rèn)響應(yīng)類型:
-
@Controller
默認(rèn)返回視圖,通常使用ViewResolver
將邏輯視圖名映射為實(shí)際視圖。 -
@RestController
默認(rèn)返回 JSON 或 XML 格式的數(shù)據(jù),而不是視圖。
-
-
使用場(chǎng)景:
- 使用
@Controller
時(shí),通常用于構(gòu)建傳統(tǒng)的 Web 應(yīng)用,其中頁(yè)面渲染由視圖模板(如 JSP、Thymeleaf)處理。 - 使用
@RestController
時(shí),適用于構(gòu)建 RESTful API,其中數(shù)據(jù)以 JSON 或 XML 格式返回給客戶端。
- 使用
實(shí)際例子:文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-796207.html
@Controller
public class WebPageController {
@GetMapping("/helloPage")
public String helloPage() {
return "helloPage"; // 返回視圖名稱,通常由視圖解析器解析為實(shí)際視圖
}
}
@RestController
public class ApiController {
@GetMapping("/api/hello")
public String helloApi() {
return "Hello, REST API!"; // 直接返回字符串,將以 JSON 或 XML 格式寫入響應(yīng)體
}
}
在構(gòu)建 Web 頁(yè)面的場(chǎng)景中,使用 @Controller
處理用戶請(qǐng)求,返回視圖名稱,然后由視圖解析器解析為實(shí)際視圖。而在構(gòu)建 RESTful API 的場(chǎng)景中,使用 @RestController
直接返回?cái)?shù)據(jù),通常以 JSON 或 XML 格式。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-796207.html
到了這里,關(guān)于Spring MVC中@Controller和@RestController的區(qū)別的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!