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 系统可以帮你检查方法的正确性。

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页