SpringBoot碰到的疑问或问题

2021-10-08 14:32:23 浏览数 (1)

1、@ResponseBody 和 @RequestBody 的区别

@ResponseBody是作用在方法上的,@ResponseBody 表示该方法的返回结果直接写入 HTTP response body 中,一般在异步获取数据时使用【也就是AJAX】,在使用 @RequestMapping后,返回值通常解析为跳转路径,但是加上 @ResponseBody 后返回结果不会被解析为跳转路径,而是直接写入 HTTP response body 中。 比如异步获取 json 数据,加上 @ResponseBody 后,会直接返回 json 数据。@RequestBody 将 HTTP 请求正文插入方法中,使用适合的 HttpMessageConverter 将请求体写入某个对象。

@RequestBody是作用在形参列表上,用于将前台发送过来固定格式的数据【xml 格式或者 json等】封装为对应的 JavaBean 对象,封装时使用到的一个对象是系统默认配置的 HttpMessageConverter进行解析,然后封装到形参上。

2、@Controller 和 @RestController的区别

使用@Controller 注解,在对应的方法上,视图解析器可以解析return 的jsp,html页面,并且跳转到相应页面;若返回json等内容到页面,则需要加@ResponseBody注解

@RestController注解,相当于@Controller @ResponseBody两个注解的结合,返回json数据不需要在方法前面加@ResponseBody注解了,但使用@RestController这个注解,就不能返回jsp,html页面,视图解析器无法解析jsp,html页面

3、spring boot2.0之后,上下文的配置 server.context-path改为了server.servlet.context-path

4、@RestControllerAdvice和 @ControllerAdvice的使用

@RestControllerAdvice:如果全部异常返回格式使用json,就可以使用该注解代替@ExceptionHanlder下的@ResponseBody注解。

@ControllerAdvice:使用它时@ExceptionHandle r必须和@ResponseBody 一起结合使用。

5、updateByPrimaryKeySelective 和 updateByPrimaryKey区别

updateByPrimaryKeySelective 只更新你要修改的列内容,其他的列的数据不受影响

updateByPrimaryKey 更新所有列的内容,包括你不修改的内容,默认赋予 null 值

0 人点赞