@PathVariable :
通过 @PathVariable 可以将 URL 中占位符参数绑定到控制器处理方法的入参中:URL 中的 {xxx} 占位符可以通过@PathVariable(“xxx“) 绑定到操作方法的入参中。
@RequestBody和@RequestParam
两个注解都是用于方法中接收参数使用的,两者也有一定的区别。
@RequestBody这个一般处理的是在ajax请求中声明contentType: “application/json; charset=utf-8”时候。也就是json数据或者xml(我没用过这个,用的是json)
@RequestParam这个一般就是在ajax里面没有声明contentType的时候,为默认的。。。urlencode格式时,用这个。
@RequestBody可以直接将页面中的参数封装成实体类中的数据传输给后天
@PostMapping @GetMapping @RequestMapping
@GetMapping是一个组合注解,是@RequestMapping(method = RequestMethod.GET)的缩写。
@PostMapping是一个组合注解,是@RequestMapping(method = RequestMethod.POST)的缩写。
@PostMapping是一个非 组合注解,需要自定义请求方式。
@RestController和@Controller
RestController相当于Controller+ResponseBody注解
如果只是使用@RestController注解Controller,则Controller中的方法无法返回jsp页面,或者html,配置的视图解析器 ,也就是相当于在方法上面自动加了ResponseBody注解,所以没办法跳转并传输数据到另一个页面,所以InternalResourceViewResolver也不起作用,返回的内容就是Return 里的内容,即数据直接甩在当前请求的页面上,适用于ajax异步请求。
如果需要返回到指定页面,则需要用 @Controller配合视图解析器InternalResourceViewResolver才行。
1
如果需要返回JSON,XML或自定义mediaType内容到页面,则需要在对应的方法上加上@ResponseBody注解,这时候就相当于@RestController注解了。
@target注解
通常用在生命自定义一个新的注解时使用,用来定义这个自定义的注解可以作用在什么上面,比如类、接口、注解、枚举, 字段, 普通方法, 参数, 构造方法, 局部变量, 注解, 包
使用方法如下图:
ElementType.METHOD表示作用在方法上,如果作用于其他地方,就会报错。
@Retention注解
Reteniton的作用是定义被它所注解的注解保留多久,一共有三种策略,定义在RetentionPolicy枚举中
public enum RetentionPolicy {
SOURCE,被编译器忽略
CLASS,注解将会被保留在Class文件中,但在运行时并不会被VM保留。这是默认行为,所有没有用Retention注解的注解,都会采用这种策略。
RUNTIME保留至运行时。所以我们可以通过反射去获取注解信息。
}
----------------------------
@Inherited
Inherited作用是,使用此注解声明出来的自定义注解,在使用此自定义注解时,如果注解在类上面时,子类会自动继承此注解,否则的话,子类不会继承此注解。这里一定要记住,使用Inherited声明出来的注解,只有在类上使用时才会有效,对方法,属性等其他无效。