Maven项目引入Hibernate Validator
2019-12-28 16:00:55来源:博客园 阅读 ()
Maven项目引入Hibernate Validator
近期的flink作业中,需要对上传的日志数据进行大量的校验。
校验规则大多比较简单,仅为字符串长度,数组长度,数据的最大值和最小值,非空判断等。然而不想写诸多校验代码,容易导致代码又丑又繁琐。联想SpringBoot项目中的参数校验,于是想着在纯maven的项目中引入校验。
引入依赖
SpringBoot的基本参数校验是基于Hibernate Validator实现的,因此在pom中引入以下依赖:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.1.0.Final</version>
</dependency>
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.el</artifactId>
<version>3.0.1-b11</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator-cdi</artifactId>
<version>6.1.0.Final</version>
</dependency>
添加注解
在需要验证的实体类中引入校验注解(不得不说,注解真香).
public class LogEvent {
@NotNull
private Instant timestamp;
@NotNull
private String filepath;
@NotNull
@Length(min = 1, max = 64)
private String region;
@NotNull
private Boolean status;
@NotNull
@Min(-1)
@Max(60 * 1000)
private Integer timeDelay;
@NotNull
@Length(min = 1, max = 64)
private String target;
@Length(max = 1024)
private String message;
@Size(max = 5)
private List<String> tags;
}
参数校验
因为Validator是thread safe
实现,因此多线程中可以放心的使用。
@Slf4j
public class LogEventUtil {
// thread safe
private static final Validator VALIDATOR = Validation.buildDefaultValidatorFactory().getValidator();
public static boolean validate(LogEvent event) {
Set<ConstraintViolation<LogEvent>> constraintViolations = VALIDATOR.validate(event);
if (!constraintViolations.isEmpty()) {
return false;
}
// 此处省略若干复杂的校验规则(脏活不可能一点都不接触的)
}
}
通过VALIDATOR.validate即可实现对LogEvent的基本校验。
flink作业引用
寥寥几笔,即完成数据读取以及校验。
private static DataStream<LogEvent> configureKafkaConsumer(final StreamExecutionEnvironment env, ParameterTool parameterTool) {
String topic = parameterTool.get("kafka.topic", "");
Properties kafkaProperties = filterPrefix(parameterTool.getProperties(), "kafka");
return env.addSource(new FlinkKafkaConsumer<>(topic, new SimpleStringSchema(), kafkaProperties))
.map((MapFunction<String, LogEvent>) LogEventUtil::parseLogEvent)
.filter((FilterFunction<LogEvent>) LogEventUtil::validate)
.name("LogEventSourceStream")
.returns(LogEvent.class);
}
原文链接:https://www.cnblogs.com/jason1990/p/12113373.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 项目经理说这种代码必须重构,我同意了,这代码是写的是有多 2020-06-11
- eclipse下创建Maven项目(包含webapp目录结构) 2020-06-09
- Maven安装与配置 2020-06-09
- 阿里巴巴26个屌炸天的开源项目,你知道几个? 2020-06-09
- IDEA下Maven的pom文件导入依赖出现Auto build completed wit 2020-06-07
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash