@RequestMapping
如果没有指定请求方式,将接收Get、Post、Head、Options等所有的请求方式.
@GetMapping
是一个组合注解,是@RequestMapping(method = RequestMethod.GET)的缩写。该注解将HTTP Get 映射到 特定的处理方法上。
get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。
get是从服务器上获取数据。
* 请求是为了查找资源,HTML表单数据仅用来帮助搜索。
* 请求结果无持续性的副作用。
* 收集的数据及HTML表单内的输入字段名称的总长不超过1024个字符。
@PostMapping
是一个组合注解,是@RequestMapping(method = RequestMethod.POST)的缩写。
get方式的安全性较Post方式要差些,包含机密信息的话,建议用Post数据提交方式;
post是向服务器传送数据。
* 请求的结果有持续性的副作用,例如,数据库内添加新的数据行。
* 若使用GET方法,则表单上收集的数据可能让URL过长。
* 要传送的数据不是采用7位的ASCII编码。
@RequestBody
@requestBody注解常用来处理content-type不是默认的application/x-www-form-urlcoded编码的内容,比如说:application/json或者是application/xml等。一般情况下来说常用其来处理application/json类型。
@RequestBody主要用来接收前端传递给后端的json字符串中的数据的(请求体中的数据的);
@RequestParam(后端方法接收请求参数)
接收的参数是来自requestHeader中,即请求头。通常用于GET请求,比如常见的url:http://localhost:8081/spring-boot-study/novel/findByAuthorAndType?author=唐家三少&type=已完结
@RequestParam有三个配置参数:
required
表示是否必须,默认为true
,必须。defaultValue
可设置请求参数的默认值。value
为接收url的参数名(相当于key值)。
@RequestParam也可用于其它类型的请求,例如:POST、DELETE等请求。
@RequestParam接收参数,要求postman以表单的格式发送数据(即使用form-data)
@RequestPart
这个注解用在multipart/form-data
表单提交请求的方法上。多用于文件上传场景。
@PutMapping
和PostMapping作用等同,都是用来向服务器提交信息,两者差别不是很明显。
如果是添加信息,倾向于用@PostMapping,
如果是更新信息,倾向于用@PutMapping。
@RestController(作用相当于@Controller+@ResponseBody)
- @Controller 将当前修饰的类注入SpringBoot IOC容器,使得从该类所在的项目跑起来的过程中,这个类就被实例化。当然也有语义化的作用,即代表该类是充当Controller的作用
- @ResponseBody 它的作用简短截说就是指该类中所有的API接口返回的数据,甭管你对应的方法返回Map或是其他Object,它会以Json字符串的形式返回给客户端,如果返回的是String类型,则仍然是String。
用@Controller,返回的是页面
@RestController,返回的是JSON、XML或其他文本
@Autowired和@Resource
明白同一类型的定义:
父类及其子类,都属于父类 这一类型;接口及其实现类,都属于接口 这一类型
根本区别
- @Autowired是按照类型装配,spring专有的
- @Resource是按照名字进行装配,java自带的
理解和应用
- 当使用@Autowired时,它有一个属性是required:默认值true。值为true时,表示必须注入,如果bean不存在则会报错;值为false时,表示bean存在就注入,不存在则不注入。
- 如果在使用@Autowired时,同时要按名称装配,那可以搭配@Qualifier使用
-
@Primary注解可以解决上述问题(按类型装配时,如果该类型的bean不止一个时,会报错)。当我们使用自动配置的方式装配Bean时,如果这个Bean有多个候选者,假如其中一个候选者具有@Primary注解修饰,该候选者会被选中,作为自动装配的bean。