前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >根据xml配置校验bean

根据xml配置校验bean

作者头像
用户3579639
发布于 2018-10-22 07:01:59
发布于 2018-10-22 07:01:59
56900
代码可运行
举报
运行总次数:0
代码可运行

例子参考自官方文档,http://oval.sourceforge.net/u... 官方文档的xml配置有点过期了,一两个属性不合法。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
├─src
│  ├─main
│  │  ├─java
│  │  │  └─com
│  │  │      └─honey
│  │  │          ├─collection
│  │  │          └─oval
│  │  └─resources

Userbean类,

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package com.honey.oval;

public class User {
    private String firstName;
    private String lastName;
    private String managerId;
    private String userId;

    public User() {

    }
    public User(String firstName, String lastName) {
        this.firstName = firstName;
        this.lastName = lastName;
    }

    public void setPasswordExpirationDays(int days) {

    }

}

OvalAppTest测试类,

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package com.honey;

import com.honey.oval.User;
import net.sf.oval.ConstraintViolation;
import net.sf.oval.configuration.xml.XMLConfigurer;
import net.sf.oval.guard.Guard;

import java.util.List;


public class OvalAppTest {

    public static void main(String[] args) {
        User user = new User("honey", "wang");
        XMLConfigurer xmlConfigurer = new XMLConfigurer(ClassLoader.class.getResourceAsStream("/oval-config.xml"));

        Guard guard = new Guard(xmlConfigurer);
        List<ConstraintViolation> constraintViolationList = guard.validate(user);
        System.out.println(constraintViolationList);
    }
}

xml配置,src/resources/oval-config.xml

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?xml version="1.0" ?>
<oval
        xmlns="http://oval.sf.net/oval-configuration"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://oval.sf.net/oval-configuration http://oval.sourceforge.net/oval-configuration.xsd"
>
    <!-- define a constraint set -->
    <constraintSet id="user.userid">
        <notNull />
        <matchPattern matchAll="false">
            <pattern pattern="^[a-z0-9]{8}$" flags="0" />
        </matchPattern>
    </constraintSet>

    <!-- define checks for the acme.model.User class -->
    <!-- overwrite=false means already defined checks for this class will not be removed -->
    <class type="com.honey.oval.User" overwrite="false" applyFieldConstraintsToSetters="true">

        <field name="firstName">
            <length min="0" max="3" />
        </field>

        <field name="lastName">
            <length min="0" max="5" />
        </field>

        <!-- overwrite=true means previously defined checks for this field will be overwritten by the checks defined here -->
        <field name="managerId" overwrite="true">
            <!-- use the checks defined for the constaint set "user.userid" -->
            <assertConstraintSet id="user.userid" />
        </field>

        <field name="userId" overwrite="true">
            <!-- use the checks defined for the constaint set "user.userid" -->
            <assertConstraintSet id="user.userid" />
        </field>

        <!-- define constructor parameter checks -->
        <constructor>
            <!-- parameter1 -->
            <parameter type="java.lang.String">
                <notNull />
            </parameter>

            <!-- parameter 2 -->
            <!-- the types of all parameters must be listed, even if no checks are defined -->
            <parameter type="java.lang.String" />
        </constructor>

        <!-- define method parameter checks -->
        <method name="setPasswordExpirationDays">
            <!-- parameter 1 -->
            <parameter type="int">
                <notNull />
            </parameter>
        </method>
    </class>
</oval>

输出结果,

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[net.sf.oval.ConstraintViolation: com.honey.oval.User.managerId cannot be null, net.sf.oval.ConstraintViolation: com.honey.oval.User.firstName is not between 0 and 3 characters long, net.sf.oval.ConstraintViolation: com.honey.oval.User.userId cannot be null]
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
DataSet的灵活,实体类的方便,DTO的效率:SOD框架的数据容器,打造最适合DDD的ORM框架
引言:DDD的困惑 最近,我看到园子里面有位朋友的一篇博客 《领域驱动设计系列(一):为何要领域驱动设计? 》文章中有下面一段话,对DDD使用产生的疑问: •没有正确的使用ORM, 导致数据加载过多,导致系统性能很差。 •为了解决性能问题,就不加载一些导航属性,但是却把DB Entity返回上层,这样对象的一些属性为空,上层使用这个数据时根本不知道什么时间这个属性是有值的,这个是很丑陋的是不是? 博主说的第一个问题,是因为使用ORM的人把实体类的全部属性的数据查询出来了,相当于执行了 select * f
用户1177503
2018/02/27
2.7K0
DataSet的灵活,实体类的方便,DTO的效率:SOD框架的数据容器,打造最适合DDD的ORM框架
apiDoc构建源代码注释的接口文档 原
本文档中的所有示例都使用Javadoc-Style(可用于C#,Go,Dart,Java,JavaScript,PHP,TypeScript和所有其他支持Javadoc的语言):
wuweixiang
2018/08/14
1.8K0
apiDoc构建源代码注释的接口文档
                                                                            原
MVC项目开发中那些用到的知识点(Jquery ajax提交Json后台处理)
  jQuery提供的ajax方法能很方便的实现客户端与服务器的异步交互,在asp.net mvc 框架使用jQuery能很方便地异步获取提交数据,给用户提供更好的体验!   调用jQuery的ajax方法时,jQuery会根据post或者get协议对参数data进行序列化;
aehyok
2018/09/11
1.8K0
MVC项目开发中那些用到的知识点(Jquery ajax提交Json后台处理)
Key Concepts of TS - FUNCTIONS
TS has classes, namespaces, and modules, but functions play a key role. The TS language slightly expands the capabilities of functions compared to JavaScript, making working with them even more convenient.
Cellinlab
2023/05/17
1950
如何优雅地进行参数校验?有什么提高代码稳壮性的方式?
肥朝小声逼逼:提高代码稳壮性,肥朝认为最好的办法就是提前预防。实际项目中,我们在配置文件配置了各种参数。但是大家也知道,不同环境的配置参数,是会不一样的,难免会因为人为疏忽,导致某个环境的配置文件,少了一些关键参数,光靠肉眼来检查,必然是一个低效而又不可靠的方式。如果你不用该方式校验,很容易在某个特殊的场景下,才触发出坑。但是你采用这种方式,做了大量的启动时校验,一旦参数不合法,项目启动都启动不了,做到了防范于未然!
二哥聊运营工具
2021/12/17
4590
如何优雅地进行参数校验?有什么提高代码稳壮性的方式?
SpringBoot入门建站全系列(六)Spring-data-jpa进阶使用
上一篇介绍了Mybatis的配置和基本用法《SpringBoot入门建站全系列(五)使用Spring-data-jpa操作数据库CRUD》
品茗IT
2019/08/07
1.2K0
分组序列@GroupSequenceProvider、@GroupSequence控制数据校验顺序,解决多字段联合逻辑校验问题【享学Spring MVC】
本以为洋洋洒洒的把Java/Spring数据(绑定)校验这块说了这么多,基本已经算完结了。但今天中午一位热心小伙伴在使用Bean Validation做数据校验时上遇到了一个稍显特殊的case,由于此校验场景也比较常见,因此便有了本文对数据校验补充。
YourBatman
2019/09/03
3.8K0
分组序列@GroupSequenceProvider、@GroupSequence控制数据校验顺序,解决多字段联合逻辑校验问题【享学Spring MVC】
Spring Validation最佳实践及其实现原理,参数校验没那么简单
本文会详细介绍Spring Validation各种场景下的最佳实践及其实现原理,死磕到底! 项目源码:spring-validation
用户1289394
2020/12/21
1.8K0
Spring 4 MVC 表单校验资源处理(带源码)
下一篇文章:Spring 4 MVC 视图解析器(XML JSON PDF等) 纯注解
明明如月学长
2021/08/27
4760
mybatis入门配置——基于xml配置
1.下载mybatis配置文件,以及数据库驱动文件,最好配置日志文件log4j可以方便测试查看日志:
小明爱吃火锅
2023/11/30
1660
2. Bean Validation声明式校验方法的参数、返回值
上篇文章 完整的介绍了JSR、Bean Validation、Hibernate Validator的联系和区别,并且代码演示了如何进行基于注解的Java Bean校验,自此我们可以在Java世界进行更完美的契约式编程了,不可谓不方便。
YourBatman
2020/09/02
1.2K0
2. Bean Validation声明式校验方法的参数、返回值
第十五节:SpringBoot使用JPA访问数据库
JPA是Java Persistence API的简写,是官方提出的一种ORM规范! JPA规范,都在包路径:javax.persistence.*下,像一些常用的如:@Entity、@Id及@Transient都在此路径下。这些也是一些现在市面上常用的ORM一些约定俗成的注解了。 Spring Data JPA是Spring基于Hibernate开发的一个JPA框架。可以极大的简化JPA的写法,可以在几乎不用写具体代码的情况下,实现对资料的访问和操作。除了「CRUD」外,还包括如分页、排序等一些常用的功能
入门笔记
2022/02/23
7220
第十五节:SpringBoot使用JPA访问数据库
芋道 Spring Boot JPA 入门(二)之基于方法名查询
在 Spring Data 中,支持根据方法名作生成对应的查询(WHERE)条件,进一步进化我们使用 JPA ,具体是方法名以 findBy、existsBy、countBy、deleteBy 开头,后面跟具体的条件。具体的规则,在 《Spring Data JPA —— Query Creation》 文档中,已经详细提供。如下:
芋道源码
2019/12/13
1.8K0
@NotNull、@NotEmpty、@NotBlank的区别
加了@NotEmpty的String类、Collection、Map、数组,是不能为null并且长度必须大于0的(String、Collection、Map的isEmpty()方法)。
JavaEdge
2021/10/18
1.4K0
两种方式实现Spring 业务验证
验证在任何时候都非常关键。考虑将数据验证作为业务逻辑开发有利也有弊,Spring 认为,验证不应该只在Web 端进行处理,在服务端也要进行相应的处理,可以防止脏数据存入数据库中,从而避免为运维同学和测试同学造成更大的困扰,因为数据造成的bug会更加难以发现,而且开发人员关注点也不会放在数据本身的问题上,所以做服务端的验证也是非常有必要的。考虑到上面这些问题,Spring 提供了两种主要类型的验证:
cxuan
2019/09/19
8070
两种方式实现Spring 业务验证
Ibatisnet Quick Start
准备工作 1. 下载ibatis软件包(http://ibatis.apache.org/dotnetdownloads.html)。 2. 创建测试数据库,并在数据库中创建一个Person 表,其中包含三个字段: Name Type Size PER_ID Long Integer 4 not null PER_FIRST_NAME nvarchar 40 not null PER_LAST_NAME nvarchar 40 not null PER_BIRTH_DATE DateTime 8 PER
张善友
2018/01/19
9460
Spring6 数据校验 Validation
在开发中,经常遇到参数校验的需求,比如用户注册的时候,要校验用户名不能为空、用户名长度不超过20个字符、手机号是合法的手机号格式等等。如果使用普通方式,会把校验的代码和真正的业务处理逻辑耦合在一起,而且如果未来要新增一种校验逻辑也需要在修改多个地方。而spring validation允许通过注解的方式来定义对象校验规则,把校验和业务逻辑分离开,让代码编写更加方便。Spring Validation其实就是对Hibernate Validator进一步的封装,方便在Spring中使用。
鱼找水需要时间
2023/06/22
3210
Spring6 数据校验 Validation
Spring MVC 4 文件上传下载 Hibernate+MySQL例子 (带源码)
【本系列其他教程正在陆续翻译中,点击分类:spring 4 mvc 进行查看。源码下载地址在文章末尾。】
明明如月学长
2021/08/27
6430
Spring 4 Spring MVC 4 REST + Jackson @JsonView集成实例详解
分享一个使用SpringMVC4 Rest 和Jackson的@JsonView注解集成的实例。@JsonView用来过滤JSON响应。Spring4.1开始直接支持@JsonView注解。要使用@JsonView,首先我们需要定义视图,我们可以定义多个视图。一个视图定义可以继承其他视图定义。我们的POJO使用@JsonView注解属性传递已经定义的视图。在Spring的Controller我们可以使用Jackson的@JsonView注解我们的方法。序列化Http响应体的时候,JSON响应将在配置视图的基础上进行过滤。我们也可以在Spring REST Client使用@JsonView注解。Spring提供了MappingJacksonValue 包装POJO和序列化视图设置,在发送到web服务器短的时候,我们可以使用RestTemplate来过滤JSON。现在一步一步呈现完整的示例。
青山师
2023/05/04
9350
Spring 4 Spring MVC 4 REST + Jackson @JsonView集成实例详解
为什么要使用Bean Validation?
Bean Validation是一个通过配置注解来验证参数的框架,它包含两部分Bean Validation API和Hibernate Validator。
周三不加班
2019/09/03
8440
推荐阅读
相关推荐
DataSet的灵活,实体类的方便,DTO的效率:SOD框架的数据容器,打造最适合DDD的ORM框架
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文