Java常用注解

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

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

3.@Service 对应的是业务层 Bean,Service("userService") 注解是告诉 Spring,当 Spring 要创建 UserServiceImpl 的实例时,bean 的名字必须叫做 "userService",
   这样当 Controller 需要使用 UserServiceImpl 的实例时, 就可以由 Spring 创建好的 "userService",
   然后注入给 Controller:在 Controller 只需要声明一个名字叫“userService”的变量来接收由 Spring 注入的 "userService" 即可

4.@RequestMapping 是用来处理请求地址映射的注解,可用于类或方法上。用在类上,表示类中所有的响应的方法都是以该地址作为父路径来访问,
   用在方法上表示该方法的访问的路径;两者结合起来的访问的路径为完整的访问某个方法的路径。

5.@Autowired 和 @Resource
   @Resource 和 @Autowired 都是做 bean 的注入时使用, 都可以写在字段上,或者是 setter 方法上
   区别是 @Autowired 注解是按照类型(byType)装配依赖对象,默认情况下它要求依赖对象必须存在
   @Resource 默认按照名称(byName)自动注入
6.@RequestParam
   @RequestParam 类似于 request.getParamter("name") 有三个参数。
   defaultValue:表示设置默认值
   required:通过 boolean 设置是否是必须要传入的参数
   Value:值表示接受的传入的参数类型
7.@ResponseBody
   @ResponseBody 该注解将 controller 的方法返回对象,通过适当的 HttpMessageConverter 转换为指定格式后写入到 Response 对象的 body 数据区。
   通常用来返回 json 数据或者是 xml 数据,需要注意的是在使用此注解之后不会在走视图处理器,而是直接将数据写入到输入流中,他的效果等同于通过 response 对象输出指定格式的 数据。
  返回的数据不是 html 标签的页面,而是其他某种数据的格式时(json、xml)等使用


8.RequestBody
  @RequestBody 该注解用于读取 Request 请求的 body 部分数据,使用系统默认配置的 HttpMessageConverter 进行解析,然后把相应的数据绑定到要返回的对象上。然后再把  HttpMessageConverter 返回的对象数据绑定到 controller 中的方法参数上。
一直以为 @RequestBody 接收的是一个 Json 对象,后来发现,其实 @RequestBody 接收的是一个 Json 对象的字符串,而不是一个 Json 对象。然而在 ajax 请求往往传的都是 Json 对象,用 JSON.stringify(data) 的方式就能将对象变成字符串。
同时 ajax 请求的时候也要指定 dataType: "json",contentType:"application/json" 这样就可以轻易的将一个对象或者 List 传到 Java 端,使用 @RequestBody 即可绑定对象或者 List.

9.@GetMapping 是一个组合注解,是 @RequestMapping(method = RequestMethod.GET) 的缩写。该注解将 HTTP Get 映射到 特定的处理方法上。

10.@PostMapping 是一个组合注解 是 @RequestMapping(method = RequestMethod.POST) 的缩写 。该注解将 HTTP Post 映射到 特定的处理方法上。