`
esffor
  • 浏览: 1367713 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Spring Bean校验器设计

阅读更多

Bean:

 

package Bean.Validator;

public class Person ...{
  
private String name;
  
private int age;
  
public Person(String name,int age)...{
      
this.name=name;
      
this.age=age;
  }

  
public Person()...{
      
  }

public int getAge() ...{
    
return age;
}

public void setAge(int age) ...{
    
this.age = age;
}

public String getName() ...{
    
return name;
}

public void setName(String name) ...{
    
this.name = name;
}

}

 配置文件:主要配置资源文件

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>

<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
  
<property name="basenames">
    
<list>
      
<value>ApplicationResources</value>
    
</list>
  
</property>
</bean>
 
</beans>

校验器:

 

package Bean.Validator;

import org.springframework.validation.Errors;
import org.springframework.validation.ValidationUtils;
import org.springframework.validation.Validator;

public class PersonValidator implements Validator ...{

    
public boolean supports(Class arg0) ...{
        
        
return Person.class.equals(arg0);
    }


    
public void validate(Object obj, Errors e) ...{
        
//拒绝name属性为空
        ValidationUtils.rejectIfEmpty(e, "name""name.empty");
        Person p
=(Person)obj;
        
if(p.getAge()<0)...{
            e.rejectValue(
"age""negativevalue");
        }
else if(p.getAge()>100)...{
            e.rejectValue(
"age","tooold");
        }


    }


}

 

测试代码:

getMessage()需要一个数据作为参数,此处可以设置一个空数组即可

package Bean.Validator;

import java.util.List;
import java.util.Locale;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
import org.springframework.validation.BindException;
import org.springframework.validation.Errors;
import org.springframework.validation.ObjectError;
import org.springframework.validation.Validator;

public class Test ...{

    
/** *//**
     * 
@param args
     
*/

    
public static void main(String[] args) ...{
          String path
=new Test().getClass().getResource("/").getPath();
            String realpath
=path.substring(1, path.length());
            ApplicationContext context
=new FileSystemXmlApplicationContext(realpath+"/validator.xml");
        Person p
=new Person();
        p.setName(
null);
        p.setAge(
200);
        Errors errors
=new BindException(p,"person");
        
//创建校验器
        Validator personValidator=new PersonValidator();
        
//校验
        personValidator.validate(p, errors);
        
//打印错误数量
        System.out.println(errors.getErrorCount());
        List errorList
=errors.getAllErrors();
        
for(int i=0;i<errorList.size();i++)...{
            ObjectError oe
=(ObjectError)errorList.get(i);
            Object b[]
=...{};
            System.out.println(context.getMessage(oe.getCode(), b,Locale.getDefault()));
        }


    }


}


运行结果:

2
Person实例的name属性不能为空
Person实例的age不能大于100



分享到:
评论

相关推荐

    Spring bean初始化及销毁你必须要掌握的回调方法.docx

    这个顺序在实际应用中非常重要,因为它确保了在Bean生命周期的不同阶段,开发者可以按照需求执行相应的清理工作或数据校验等操作。在上述测试中,我们观察到了这个顺序,它为理解Spring Bean的生命周期提供了直观的...

    使用监听器对Spring bean id进行唯一校验过程解析

    使用监听器对Spring bean id进行唯一校验过程解析 在Spring框架中,bean的定义是非常重要的一部分,而bean的唯一性校验也是一个非常重要的环节。然而,在实际开发中,我们经常会遇到bean id重复的问题,这会导致...

    Spring Mvc(1)Spring MVC 校验

    如果内置的校验注解不能满足需求,Spring MVC 允许我们自定义校验注解和校验器。首先,创建一个自定义注解,例如 `@EmailUnique`: ```java @Target(ElementType.FIELD) @Retention(RetentionPolicy.RUNTIME) ...

    spring mvc校验

    总的来说,Spring MVC的数据校验机制结合了注解、自定义校验器以及国际化错误消息,提供了强大的数据验证能力,确保了系统的健壮性。通过阅读这篇博文和分析给出的文件,我们可以深入理解这一机制,并在实际开发中...

    拦截器 与 校验器 源代码

    在编程领域,拦截器(Interceptor)和校验器(Validator)是两种常见的设计模式,用于增强系统的功能和灵活性。它们通常被用在框架和库中,以提供额外的控制流和数据验证。以下是对这两个概念的详细解释以及它们在源...

    Spring中校验器(Validator)的深入讲解

    除了使用预定义的注解外,Spring还允许我们自定义校验器。通过实现`Validator`接口,我们可以创建自己的校验逻辑。此外,还可以通过`@Constraint`注解来自定义注解,并通过`@Validated`注解在类或方法参数上使用这些...

    springmvc数据验证

    它整合了Spring框架的功能,提供了模型-视图-控制器(MVC)架构模式,使得开发者可以更专注于业务逻辑,而不是底层实现。在Spring MVC中,数据验证是确保输入数据正确性和安全性的关键环节。 数据验证是任何应用...

    Spring验证/list配置

    当你在控制器的方法参数上使用`@Validated`时,Spring会自动调用验证器来检查传入的对象。 2. **集合元素验证**:对于`List`或其他集合类型的字段,你可以通过在对应的字段声明上使用`@Valid`注解,然后为列表元素...

    SPRING技术内幕+深入解析SPRING架构与设计 55M(下载地址)

    - 数据绑定、校验以及视图解析器的配置与使用。 6. **数据访问支持**: - JdbcTemplate与SimpleJdbc*系列类的使用方法。 - Spring提供的ORM框架集成支持,包括Hibernate、MyBatis等。 - 事务管理的实现策略与...

    spring注入web端校验类

    2. **配置Spring**:在Spring的配置文件中,你需要将这个自定义校验器注册为bean。这可以通过XML配置或Java配置完成。例如,在XML配置中,你可以添加以下代码: ```xml &lt;bean id="userValidator" class=...

    spring+hibernate+vaildator 校验demo代码

    这个Demo可能还包含了测试类,用来验证整个流程的正确性,包括Spring的bean初始化、Hibernate的数据操作以及Validator的数据校验。 总之,这个"spring+hibernate+vaildator"的示例代码旨在演示如何在实际项目中...

    24 Spring Core vs Spring MVC参数校验慕课专栏1

    本节主要讨论了Spring Core和Spring MVC中的参数校验,以及它们如何利用Bean Validation标准和Hibernate Validator进行数据验证。 Bean Validation是Java平台上的一个规范,它定义了数据验证的元数据模型和API。这...

    Bean Validation技术实现对Javabean的校验

    本篇文章将深入探讨Bean Validation技术,以及如何利用它来对Javabean进行校验。 一、Bean Validation简介 Bean Validation是Java EE的一部分,也是JSR 303和JSR 349规范的实现,后来在Java 8中升级为JSR 380。这个...

    spring4采用JSR349标准校验数据

    标题中的“spring4采用JSR349标准校验数据”指的是Spring框架的第四个主要版本(Spring 4)如何利用JSR 349(Bean Validation 1.1)来实现数据验证的功能。JSR 349是JavaBeans验证的规范,它定义了一种标准化的方式...

    springmvc校验器validation的所有配套jar包

    这里提到的"springmvc校验器validation的所有配套jar包"是指用于实现Spring MVC中数据验证功能所需的一系列库文件。具体来说,这些jar包通常包括Hibernate Validation、Spring的验证支持以及可能的其他依赖。 ...

    Spring Boot技术知识点:如何使用@Valid注解来对邮箱字段进行数据校验

    除了内置的验证注解,我们还可以创建自定义的校验注解和对应的校验器,以满足特定业务需求。自定义校验注解需要使用`@Constraint`,而校验器则需要实现`Validator`接口。 总结来说,`@Valid`注解在Spring Boot中的...

    Hibernate Validator校验框架Demo

    2. **校验器**:每个约束注解对应一个校验器,负责执行具体的验证逻辑。 3. **验证API**:主要由`Validator`接口和`Validation`类组成,用于创建和使用校验器进行验证操作。 4. **配置**:可以通过`...

    Spring-Reference_zh_CN(Spring中文参考手册)

    3.3.3. bean属性及构造器参数详解 3.3.3.1. 直接量(基本类型、Strings类型等。) 3.3.3.2. 引用其它的bean(协作者) 3.3.3.3. 内部bean 3.3.3.4. 集合 3.3.3.5. Nulls 3.3.3.6. XML-based configuration metadata ...

Global site tag (gtag.js) - Google Analytics