SpringFramework特性(二)校验注解的使用

本文详细介绍了Spring Framework中的验证特性,包括基础类型和包装类的校验、集合类约束、@Valid注解的使用(常规bean校验和级联验证)、分组验证。通过实例展示了如何在Spring Boot中进行数据验证,并提到了相关官方文档作为参考。
摘要由CSDN通过智能技术生成

SpringFramework是SpringBoot的基石,所以在SpringBoot中使用validator进行验证,实际使用的是SpringFramework中的bean验证特性。而在SpringFramework中集成的是实现了JSR-303标准的Hibernate验证框架,所以我们使用的大多数与验证相关的注解都是Hibernate验证框架实现的。

1.基础类型及其包装类校验

  • 在类上使用@Validated,方法的形参和返回参数上的约束将会生效

    @RestController
    @Validated
    public class ValidationTestWebBeanController {
         
    
    	/**
    	 * 基础类型以及其包装类约束
    	 * @param hair
    	 * @return
    	 */
    	@PostMapping("/testValidatedAnnotation")
    	public @Length(min = 1,max =10 ) String testValidatedAnnotation(  @RequestParam @Range(min = 20,max = 1000000) Long hair){
         
    		return  "joey:"+hair;
    	}
    }
    
  • 测试方法如下,可见传入了hair数量低于最小量,抛出了一个预期内的错误

    @RunWith(SpringRunner.class)
    @SpringBootTest
    @AutoConfigureMockMvc
    public class ValidationTestWebBeanControllerTest {
         
    	@Autowired
    	private MockMvc mockMvc;
    	@Test
    	public void testValidatedAnnotation() {
         
    		try {
         
    			mockMvc.perform(post("/testValidatedAnnotation").param("hair", "10").contentType(MediaType.APPLICATION_FORM_URLENCODED_VALUE));
    		} catch (Exception e) {
         
    			Assert.assertThat(e.getMessage(), containsString("ConstraintViolationException"));
    		}
    
    	}
    }
    

2.集合类的约束

  • 对集合进行校验和常规校验相同:

    @RestController
    @Validated
    public class ValidationTestWebBeanController {
         
       /**
    	 * 集合约束
    	 * @param words
    	 * @return
    	 */
    	@PostMapping("/testValidatedCollection")
    	public  String testValidatedCollection(@RequestBody @Size(min = 2) @NotEmpty List< @Length(max = 4) String>  words){
         
    		return StringUtils.join(words);
    	
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值