通过@RestController
的源码可知,
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Controller
@ResponseBody
public @interface RestController {}
该注解包括了@Controller
和@ResponseBody
两个注解。而@Controller
注解就是为了把视图所在的类注入到IOC容器中;@ResponseBody
就是把视图方法响应请求后返回的内容返回到请求页面上。所以,现在@RestController
注解实现了两者功能的合体,只需要在视图层的类上标识一个@RestController
注解后,视图层类中方法返回的内容会自动返回到请求页面上。示例如下
1、spring boot的启动类
@SpringBootApplication
public class App {
public static void main(String[] args) {
SpringApplication app = new SpringApplication(App.class);
ConfigurableApplicationContext context = app.run(args);
}
}
2、spring boot的控制视图层类
package com.lzj.spring.boot;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/*二、@RestController注解表明了该类中方法的返回值可以直接作为一个body进行输出,并且方法上不在用标识@ResponseBody注解。
* 因为@RestController注解的 源码中包括了@ResponseBody注解。
* @RestController起到了@Controller和@ResponseBody的作用
* 把返回的内容直接放回到请求的页面上,没有改变页面的url*/
@RestController
public class MyRestController {
@RequestMapping("/create")
public String create(){
return "create";
}
}
运行启动类,在浏览器中输入http://127.0.0.1:8080/create后,控制视图中的create方法响应该请求,然后把返回的”create”的字符串返回到http://127.0.0.1:8080/create页面的body上。