主程序注解,spring框架的main函数自带注解。一般不需要开发人员操作,Spring Initializer会写好。
@Controller标注控制器类,控制器中的方法可以返回一个视图,在Web开发中一般使用的少(主要是用@RestController)。
@ResponseBody@Controller+@ResponseBody=@RestController
因为SpringBoot已经封装了@RestController,所以一般不需要使用上面等式左边的方式(好比茴字的四种写法),我个人认为不需要花时间学习。
@RequestBody@PostMapping中会再次介绍。将json解析为java对象。
使用场景:json传参
@RequestMapping@RequestMapping(“url“),用来将请求映射到方法。
在实际开发中,在具体的控制器类之前添加该注解即可。
@RequestParam用来获取url中?后的参数。
public void searchById(@RequestParam(value ="id", required = true, defaultValue = "0")int id){// required, defaultValue不写也可以
...
}
使用场景:URL传参
@PathVariable同样是从URL中获得参数,方式和@RequestParam不一样。
@RequestMapping("/user/{id}")public void searchById(@PathVariable(required = true)int id){
...
}
使用场景:URL传参
@RestController作用=@Controller+@ResponseBody,返回json格式数据。现在Web开发中的Controller一般都是RestController。
一般和@RequestMapping、@GetMapping、@PostMapping配合使用。
使用方法:
@RequestControllerpublic class RestController {
...
} @GetMapping
响应GET请求。
@RequestController@RequestMapping("rest")
public class RestController {
@GetMapping("get") // :8080/rest/get
public String get(){
return "";
}
}
@GetMapping可以使用@PathVariable、@RequestParam
@PostMapping响应POST请求。
@RequestController@RequestMapping("rest")
public class RestController {
@PostMapping("post") // :8080/rest/post
public String post(@RequestBody User user){
return "";
}
}
一般来说,POST方法的传参不受限制,可以使用URL传参,也可以使用@RequestBody获取请求体中的json,并解析为响应的java对象。
POST方法和GET方法可以共用一个URL,不用担心起冲突,即下面的使用方式是OK的:
@RequestController@RequestMapping("rest")
public class RestController {
@GetMapping
public String get(){
return "";
}
@PostMapping
public String post(@RequestBody User user){
return user.toString();
}
}
// 不会冲突,只要请求方法正确(正确使用GET、POST),就能被正确的方法响应。
@PutMapping、@DeleteMapping使用方式大同小异,其实从功能上来说,@PostMapping能替代所有的请求,但是这么使用会导致代码语义混乱。
简单说明一下各种请求方法的使用场景:
方法 场景GET 获取资源
POST 新增资源
PUT 更新资源
DELETE 删除资源
@CrossOrigin
用来解决跨域问题,何为跨域移步这里