@Controller与@RestController注解区别

@Controller与@RestController注解区别:

@RestController 注解相当于 @Controller + @ResponseBody 合在一起的作用。(此句理解了,下面就可以不用看)

1、@Controller注解

@Controller 是Spring框架提供的注解。

@Controller标识的类,该类代表控制器类(控制层/表现层)。之后分发处理器会扫描使用该注解的类的方法,并检测该方法是否使用了@RequestMapping注解。(@RequestMapping 用来映射请求,也就是通过它来指定控制器可以处理哪些URL请求)

@Controller
public class HelloWorld{
	
	@RequestMapping(value="/showHello")
	public String printHello() {
		return "hello";
	}
}

URL 请求路径就是 http://localhost/项目名/showHello

2、@RestController注解

@RestController 其实也是Spring框架提供的注解。

@RestController 注解相当于 @Controller + @ResponseBody 合在一起的作用。

所以用@RestController 注解类的方法返回值,默认是json对象,也就是相当于@Controller里面的方法上添加@ResponseBody
,如果方法返回值,需要跳转,那么方法的返回类型必须是View 或者ModelAndView.

@RestController
public class SampleController {

    @RequestMapping(value="/map")
    public Map getMap() {
        return new HashMap<String, String>(){{
           put("name", "RestController-Map");
        }};
    }

    @RequestMapping(value="/"str")
    public String getStr() {
        return "OK";
    }
}

这部分代码对于Map返回则是JSON String--{"name":"RestController-Map"},对于String则仍然是String--"OK"

猜你喜欢

转载自blog.csdn.net/qq_34357018/article/details/107759688
今日推荐