`
234390216
  • 浏览: 10229702 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
博客专栏
A5ee55b9-a463-3d09-9c78-0c0cf33198cd
Oracle基础
浏览量:462459
Ad26f909-6440-35a9-b4e9-9aea825bd38e
springMVC介绍
浏览量:1775243
Ce363057-ae4d-3ee1-bb46-e7b51a722a4b
Mybatis简介
浏览量:1398162
Bdeb91ad-cf8a-3fe9-942a-3710073b4000
Spring整合JMS
浏览量:394945
5cbbde67-7cd5-313c-95c2-4185389601e7
Ehcache简介
浏览量:679873
Cc1c0708-ccc2-3d20-ba47-d40e04440682
Cas简介
浏览量:530768
51592fc3-854c-34f4-9eff-cb82d993ab3a
Spring Securi...
浏览量:1183557
23e1c30e-ef8c-3702-aa3c-e83277ffca91
Spring基础知识
浏览量:467443
4af1c81c-eb9d-365f-b759-07685a32156e
Spring Aop介绍
浏览量:151267
2f926891-9e7a-3ce2-a074-3acb2aaf2584
JAXB简介
浏览量:68014
社区版块
存档分类
最新评论

Spring Boot(15)——自动配置Validation

阅读更多

自动配置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所写)

0
0
分享到:
评论

相关推荐

    SpringBoot 55道面试题和答案.docx

    SpringBoot 提倡“约定优于配置”的原则,通过自动配置和一系列预先打包的 Starter POMs(启动器),使得开发者能够更快速地构建稳定且独立运行的 Spring 应用程序。 SpringBoot 的优点主要包括: 1. 快速构建:它...

    spring.4.2.jar

    《Spring框架4.2详解——基于Java开发者的实用指南》 Spring框架是Java开发者不可或缺的工具,它以其灵活、高效和模块化的特性深受广大程序员喜爱。本文将详细探讨Spring框架4.2版本的核心特性和使用方法,帮助使用...

    spring-framework-2.5.5.rar

    Spring 框架是 Java 开发领域中一个极为重要的开源...随着版本的迭代,Spring不断演进,引入了更多现代的特性,如Spring Boot、Spring Cloud等,但其核心理念——简化开发、提高可测试性和模块化设计——始终贯穿其中。

    spring2.5+struts2.0+hibernate3.3整合

    在IT行业中,Spring、Struts2和Hibernate是Java Web开发中的三大...随着技术的不断迭代,现在的趋势是转向Spring Boot和Spring MVC,它们集成了许多功能,简化了配置,但S2SH整合仍然是理解Web开发框架协同工作的基础。

    Spring-MVC-Practice:使用Spring MVC进行学习

    如果项目使用了Spring Boot,那么Spring MVC的配置将更简洁,因为Spring Boot自动配置了许多默认设置。 实践项目"Spring-MVC-Practice"将涵盖以上知识点,并通过实际编码加深理解。从项目文件名称列表"Spring-MVC-...

    服务端源码java-vueblog-Java:服务端

    Spring Boot是Java开发中的主流框架,它简化了Spring应用的初始搭建以及配置过程。VueBlog项目使用Spring Boot作为基础架构,提供了快速开发服务的能力。Spring Boot内嵌Tomcat服务器,使得我们可以无需额外配置...

    HouseAgency:阳光租房——李亮

    8. **测试**:为了保证软件质量,李亮可能使用JUnit和Mockito进行单元测试,而集成测试则可能使用Spring Boot的Test Slice或Selenium等工具。 9. **部署与运维**:项目可能部署在Tomcat或Jetty等应用服务器上,并...

    struts2的jar包.zip

    不过,随着Spring Boot和Spring MVC的普及,现在越来越多的项目倾向于使用它们,因为它们提供了更简洁的配置和更现代的开发体验。但Struts2作为经典的Java Web框架,其设计理念和实践仍然值得学习和借鉴。

    RedMartTicketSystem

    - **Spring Boot**:简化了Spring应用的初始搭建及配置过程,自动配置了许多常见组件。 - **Spring Data JPA**:简化了数据访问层的开发,支持JPA规范,可以直接使用Repository接口操作数据库。 - **Hibernate**...

    MySQL Java开发实战.pdf

    5. **项目构建与技术选型**:使用Spring Boot 2和Spring Web MVC可以快速搭建一个Java应用,集成MyBatis和HikariCP作为数据访问和连接池管理组件。同时,创建阿里云RDS MySQL实例可以提供稳定可靠的数据库服务。 6....

    contacts:联系人管理应用程序

    开发中通常会采用Spring Boot框架,它简化了配置过程,提供了快速构建微服务的能力,并且拥有丰富的生态库支持。结合Thymeleaf或Vue.js作为前端框架,可以构建出交互性强、用户体验良好的用户界面。 二、数据库设计...

    ParkingProject

    1. **Spring Boot框架**:Spring Boot简化了Spring的应用开发,提供了快速构建独立应用程序的方式。我们可以通过其内置的Tomcat服务器,轻松实现服务的启动和部署。 2. **RESTful API设计**:为了方便前端和其他...

Global site tag (gtag.js) - Google Analytics