Spring+SpringBoot常用注解
控制器相关
@Controller
控制层组件,定义一个springMVC的控制器类,往往需要和@RequestMapping配合使用。
@RestController
相当于@ResponseBody+@Controller合在一起的作用。
@RequestMapping
这个注解会将 HTTP 请求映射到 MVC 和 REST 控制器的处理方法上。
用于配置控制层的访问URL,可以用在控制器类上和控制器方法上,如果用在控制器类上,则访问类中的方法是要加上类上的路径。
- value:设置访问的URL,数组,可以将多个请求映射到一个方法上去。支持通配符配置
- method:设置访问的方法,数组,可是设置多个访问方法映射到同一个方法上,默认为GET方法
- params:指定request中必须包含某些参数值是,才让该方法处理。数组。
- headers:指定request中必须包含某些指定的header值,才能让该方法处理请求。数组。
@ResponseBody
作用是将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON数据或者是XML
请求类型相关
@GetMapping
用于将HTTP get请求映射到特定处理程序的方法注解
具体来说,@GetMapping是一个组合注解,是@RequestMapping(method = RequestMethod.GET)的缩写。
@PostMapping
用于将HTTP post请求映射到特定处理程序的方法注解
具体来说,@PostMapping是一个组合注解,是@RequestMapping(method = RequestMethod.POST)的缩写。
@DeleteMapping
注:
- 请求资源应该使用GET;
- 添加资源应该使用POST;
- 更新资源应该使用PUT;
- 删除资源应该使用DELETE.
参数相关
@Autowired
它可以对类成员变量,方法及构造函数进行标注,完成自动装配工作,可以消除set,get方法。
@PathVariable
通过 @PathVariable 可以将URL中占位符参数{xxx}绑定到处理器类的方法形参中@PathVariable(“xxx“)
参考原文
可以在@RequestMapping注解中用{ }来表明它的变量部分,例如:
@RequestMapping(value="/user/{username}")
这里的{username}就是我们定义的变量规则,username是变量的名字,那么这个URL路由可以匹配下列任意URL并进行处理:
- /user/Tom
- /user/Jerry
- /user/Jack2
@RequestMapping(value="/user/{username}")
public String userProfile(@PathVariable(value="username") String username) {
return "user"+username;
}
@RequestParam
接受的参数来自requestHeader,即请求头,用来接收GET和POST请求参数并将参数赋值到被@RequestParam注解的变量上,同样可以使用requet.getParameter(“name”)获取,默认的参数接受方式,如果controller方法的参数未使用@RequestParam,则默认也是使用@RequestParam接受参数。用来处理Content-Type: 为 application/x-www-form-urlencoded编码的内容。
required:是否必须,默认true,必须。
defaultValue:默认值,请求的参数为空时使用默认值。
value:请求的参数名。
@RequestParam和@PathVariable区别
@RequestParam和@PathVariable都能够完成类似的功能——因为本质上,它们都是用户的输入,只不过输入的部分不同,一个在URL路径部分,另一个在参数部分。要访问一篇博客文章,这两种URL设计都是可以的:
- 通过@PathVariable,例如/blogs/1
- 通过@RequestParam,例如blogs?blogId=1
那么究竟应该选择哪一种呢?建议:
1、当URL指向的是某一具体业务资源(或资源列表),例如博客,用户时,使用@PathVariable
2、当URL需要对资源或者资源列表进行过滤,筛选时,用@RequestParam
例如我们会这样设计URL:
- /blogs/{blogId}
- /blogs?state=publish而不是/blogs/state/publish来表示处于发布状态的博客文章
其它
@Service
服务层组件,用于标注业务层组件,表示定义一个bean,自动根据bean的类名实例化一个首写字母为小写的bean,也可以指定bean的名称:@Service(“beanName”)。
@Repository
持久层组件,用于标注数据访问组件,即DAO组件。与@Mapper功能类似。
@Override
@Override是伪代码,表示重写。在方法前面加上@Override 系统可以帮你检查方法的正确性。