Spring全家桶中的常用注解

@RestController

@RestController 注解相当于 @ResponseBody + @Controller,表示这个类中的方法返回,均是JSON格式的数据。

@PathVariable(路径变量)

SpingBoot支持restful风格的请求,比如前台请求/user/1,后台可以这样获取

@GetMapping("/user/{userId}")
public String getUserInfo(@PathVariable(value = "userId") Integer id) {
    System.out.println("获取到的用户id为:" + id);
    return "success";
}

如果请求URL 中的参数和方法中的参数名称相同,可以省略value属性,否则要指定。

@RequestParam

该注解也是获取获取请求参数,功能和@PathVariable类似。

但是它们的写法时不同的(以请求userId=1的用户信息为例),而且解析也不一样

@PathVariable:/user/1
@RequestParam:/user?userId=1

@RequestParam传递的参数是封装在Request对象中的,另外它还有个默认值(可以看源码。)

如果前台传入的参数很多,比如表单提交一位学生信息(年龄,籍贯,身高,性别,出生年月,班级,任课老师,成绩,综合评价)。

这样的信息是很多的,而且高度统一,如果用@RequestParam来接收,可能要写数个,甚至数十个@RequestParam。

此时,我们可以用@RequestBody来接收多参数请求。

@RequestBody

@RequestBody能够接收前端传来的多参数,并且将其映射为java实体类。

前提是,参数名必须和实体类的属性名一一对应。

@Data
public class Student {
    private String username;
    private String password;
    private String gender;
}
@PostMapping("/student")
public String test(@RequestBody Student student) {
    System.out.println("接收到的用户名为:" + student.getUsername());
    System.out.println("接收到的密码为:" + student.getPassword());
    System.out.println("接收到的性别为:" + student.getGender());
    return "SUCCESS";
}

@validated(参数检验)

spring-boot已经引入基础包,直接使用即可。

可以在controller上,做业务处理前,先对参数进行校验。

controller

	/**
     * 新增参数配置
     */
    @PostMapping
    public AjaxResult add(@Validated @RequestBody SysConfig config){
        if (UserConstants.NOT_UNIQUE.equals(configService.checkConfigKeyUnique(config))){
            return AjaxResult.error("新增参数'" + config.getConfigName() + "'失败,参数键名已存在");
        }
        config.setCreateBy(SecurityUtils.getUsername());
        return toAjax(configService.insertConfig(config));
    }

实体类

@Data
public class SysConfig {
    private static final long serialVersionUID = 1L;

	@NotBlank(message = "参数名称不能为空")
    @Size(min = 0, max = 100, message = "参数名称不能超过100个字符")
    private String configName;

	@NotBlank(message = "参数键名长度不能为空")
    @Size(min = 0, max = 100, message = "参数键名长度不能超过100个字符")
    private String configKey;
    
    @NotBlank(message = "参数键值不能为空")
    @Size(min = 0, max = 500, message = "参数键值长度不能超过500个字符")
    private String configValue;

    /** 系统内置(Y是 N否) */
    private String configType;
}

此时,当前台传入的参数不满意条件,就会抛出异常,然后由异常中心统一处理

也可以在controller中增加参数BindingResult,自行处理异常,但是这有点侵入封装好的逻辑,不推荐

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值