自动配置Validation
当应用中的Classpath下存在javax.validation
的实现时,Spring Boot的org.springframework.boot.autoconfigure.validation.ValidationAutoConfiguration
将会自动配置用于validate的LocalValidatorFactoryBean
,前提是在用户没有自己定义javax.validation.Validator
类型的bean的情况下,LocalValidatorFactoryBean
也是实现了javax.validation.Validator
接口的。此外,在缺少org.springframework.validation.beanvalidation.MethodValidationPostProcessor
类型的bean的情况下还会自动配置一个org.springframework.validation.beanvalidation.MethodValidationPostProcessor
类型的bean。它允许我们在bean的方法参数或方法上添加JSR303标准的Validation注解,从而在进行bean的方法调用时可以对方法参数或方法的返回值进行有效性验证。需要对bean的方法调用进行有效性校验需要在bean对应的Class上添加org.springframework.validation.annotation.Validated注解。假设应用中拥有如下这样一个bean定义,可以看到notNull方法的参数上添加了@NotNull
,即不允许传递的参数为null;notBlank方法的参数上添加了@NotBlank
,即不允许传递的参数为null或空字符串;returnPositive方法上添加了@Positive
,即返回值只允许返回正数。
@Service
@Validated
public class ValidationTestService {
public void notNull(@NotNull Integer num) {
}
public void notBlank(@NotBlank String str) {
}
@Positive
public int returnPositive(int num) {
return num;
}
}
更多的JSR303注解的应用请参考对应的API文档。
进行单元测试如下,你会发现testNotNull()
将失败,而testNotNull2()
将成功;testNotBlank()
和testNotBlank1()
将失败,而testNotBlank2()
将成功;testReturnPositive()
将成功,而testReturnPositive2()
将失败。
@SpringBootTest(classes=Application.class)
@RunWith(SpringRunner.class)
public class ValidationServiceTest {
@Autowired
private ValidationTestService validationTestService;
@Test
public void testNotNull() {
Integer num = null;
this.validationTestService.notNull(num);
}
@Test
public void testNotNull2() {
Integer num = 1;
this.validationTestService.notNull(num);
}
@Test
public void testNotBlank() {
String str = null;
this.validationTestService.notBlank(str);
}
@Test
public void testNotBlank2() {
String str = "";
this.validationTestService.notBlank(str);
}
@Test
public void testNotBlank3() {
String str = "A";
this.validationTestService.notBlank(str);
}
@Test
public void testReturnPositive() {
int num = 1;
this.validationTestService.returnPositive(num);
}
@Test
public void testReturnPositive2() {
int num = -1;
this.validationTestService.returnPositive(num);
}
}
(注:本文是基于Spring Boot 2.0.3所写)
相关推荐
odelay.zip,提供延迟执行操作的灵长类动物延迟反应
java运行依赖jar包
java运行依赖jar包
java运行依赖jar包
java运行依赖jar包
2020年最新Spring Boot Validation讲透讲全,别找其他的了。包括了平时用到的所有用法以及代码实例。
常用jar包
包括'chapter-2-spring-boot-quick-start','chapter-4-spring-boot-validating-form-input','chapter-5-spring-boot-paging-sorting','doc','springboot-configuration','springboot-dubbo-client','springboot-...
主要介绍了Spring Validation实现原理分析,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
Spring Boot Documentation 1. About the Documentation 2. Getting Help 3. First Steps 4. Working with Spring Boot 5. Learning about Spring Boot Features 6. Moving to Production 7. Advanced Topics II. ...
java运行依赖jar包
基于springboot框架实现一些常用的功能
Spring Boot + validation + AOP 请求参数校验 一、validation 校验注解 通用 @Null 被注释的属性必须为 null @NotNull被注释的属性必须不为 null @AssertTrue 被注释的属性必须为 true @AssertFalse 被注释的属性...
Spring boot 常用Jar包,里面包含了aspectjrt-1.8.13,jackson-core-2.8.10,spring-boot-1.5.10.RELEASE,spring-aop-4.3.14.RELEASE,validation-api-1.1.0.Final等。
java运行依赖jar包
Bean Validation是Java定义的一套基于注解的数据校验规范。这里简单实现了Spring Boot 参数校验,包括自定义注解,分组校验,全局异常处理等
主要介绍了spring boot validation参数校验,结合实例形式分析了spring boot validation进行数据有效性验证的相关操作技巧,需要的朋友可以参考下
spring注解-validation所用到的jar包
使用Liquibase的Spring Boot多个数据源多个数据源您需要向yaml配置文件中添加几个数据源定义。 datasource: primary: url: jdbc:mysql://localhost/primary username: root driver-class-name: ...
Spring使用XML配置声明式事务 ,具体效果和过程看博文 http://blog.csdn.net/evankaka/article/details/45478007