在项目开发中,当使用配置文件的时候,需要对一些配置参数进行合法校验,如果不存在则会抛出异常或者提醒用户重新修改配置文件后运行系统。 以前的做法就是读取到配置文件后,每个配置项挨个检查,写多个if判断是否存在问题。 这样可以实现功能需要,但是后续的维护工作是一个很大的问题。 增加某一项配置后,需要增加一个if判断。 如果漏掉一个判断,则可能会因为取到一个语言层面的类型的默认值,就会造成一些不可挽回的损失。 由于java提供了注解和反射,这样可以利用注解把参数的规格及发生异常时候的提示信息通过注解组织起来。然后提供一个统一的校验工具函数实现对参数项的校验。

实现目标

实现一个基本的配置项是否为空的统一的校验函数。 只对参数进行是否为空的判断,并且在为空的时候可以抛出指定的错误信息。

实现思路

定义一个注解,主要描述一个字段是否允许为空和一个为空时候的异常信息。定义如下:

class名:ValidField

怎么使用呢, 直接在类的成员变量上面,增加注解及注解说明。例如:

具体实现的逻辑代码如下:

使用方法

后续如果再增加配置项,直接声明配置属性即可, 不需要额外增加代码进行有效性校验代码。 如果有其他逻辑处理,也可以扩展注解和校验实现代码逻辑即可。

emailjava中怎么校验_Java使用注解实现参数统一校验功能相关推荐

  1. java分组校验_SpringBoot @Validated注解实现参数分组校验的方法实例

    前言 在前后端分离开发的时候我们需要用到参数校验,前端需要进行参数校验,后端接口同样的也需要,以防传入不合法的数据. 1.首先还是先导包,导入pom文件. org.springframework.bo ...

  2. AspectJ切面自定义注解实现参数分组校验——基础概念(2)

    AspectJ切面自定义注解实现参数分组校验--基础概念(2) 一.环境 二.创建AspectJ 2-1.基础概念 2-2.Pointcut规则表达式 2-3.切点标志符pointcut design ...

  3. java 入参校验_java开发参入参数校验

    一:字段少的校验用法 Assert.notNull(payable, "Payable不能为空!"); Assert.notNull(payable.getNettingStatu ...

  4. 简述java在安卓开发中的应用_Java 自定义注解在安卓开发中的简单运用

    定义:注解(Annotation),也叫元数据.一种代码级别的说明.它是JDK1.5及以后版本引入的一个特性,与类.接口.枚举是在同一个层次.它可以声明在包.类.接口.枚举.字段.方法.局部变量.方法 ...

  5. java注解获取参数_JAVA 自定义注解及参数获取 | 学步园

    package com.java.annotation; import java.lang.annotation.*; /** * Created by lw on 14-5-30. * 自定义注解 ...

  6. java中画图喷枪_JAVA 画图板实现(基本画图功能+界面UI)一、界面实现

    /*文章中用到的代码只是一部分,需要源码的可通过邮箱联系我 1978702969@qq.com*/ 这段时间在学JAVA的swing界面开发,试着做了个画图板.实现了直线.曲线.喷枪.矩形.圆形.文字 ...

  7. SpringBoot中的Validator参数校验器——通过注解的方式控制controler接收参数的规则

    前言 在日常的接口开发中,经常要对接口的参数做校验,例如,登录的时候要校验用户名密码是否为空.但是这种日常的接口参数校验太烦锁了,代码繁琐又多. Validator框架就是为了解决开发人员在开发的时候 ...

  8. java 注解 方法 参数_java在注解中绑定方法参数的解决方案

    我们有这样子的需求,需要记录用户操作某个方法的信息并记录到日志里面,例如,用户在保存和更新任务的时候,我们需要记录下用户的ip,具体是保存还是更新,调用的是哪个方法,保存和更新的任务名称以及操作是否成 ...

  9. java 方法参数绑定_java在注解中绑定方法参数的解决方案

    我们有这样子的需求,需要记录用户操作某个方法的信息并记录到日志里面,例如,用户在保存和更新任务的时候,我们需要记录下用户的ip,具体是保存还是更新,调用的是哪个方法,保存和更新的任务名称以及操作是否成 ...

最新文章

  1. Redis 笔记(05)— hash 类型(设置获取单个hash值、判断hash键是否存在、设置获取多个hash值、获取所有hash的键、获取所有hash的值、删除hash指定键)
  2. ijkplayer iOS集成
  3. 深入分析 Redis Lua 脚本运行原理
  4. java程序中my.ini_帮忙写个JAVA 读写ini配置文件小程序!!!!!
  5. 技术优点_波纹管内衬管制造技术及优点
  6. 一道无限级分类题的 PHP 实现
  7. @清晰掉 C++ 中的 enum 结构在内存中是怎么存储的?
  8. postgres 把一个表的值转成另一个表的字段名_Postgres索引那些事
  9. Java对象的serialVersionUID在序列化和反序列化的用途
  10. 线性表_使用栈实现二进制转换到八进制/十进制/十六进制
  11. HTML5求自动在闪,HTML5 重复而不停闪烁的团状物
  12. mysql单机三实例_Mysql单机多实例
  13. 给力大辞典v3.0 免费安装版【包含18部字典词典】
  14. 软件各种版本的含义!例如RC,M,GA等等
  15. 新手入门,求大神帮助!!!
  16. 记事狗微博php,记事狗微博系统_366rtc
  17. VI设计中系统视觉基本要素优漫动游
  18. 新一代iPad Pro外形泄露:方形后摄瞩目
  19. js 空数组直接赋值与push
  20. 映象笔记导出到word

热门文章

  1. c# 读取记事本txt文档到DataTable中
  2. 以色列:新发明大幅提高太阳能发电效率
  3. 实体与属性间的划分原则
  4. 预防死锁可以破坏哪些死锁的必要条件
  5. 集合添加元素python_Python 集合(Set)
  6. 如何使用notepad运行python程序
  7. Python基础总结之常用内置方法总结
  8. java怎样写入五个人的成绩_用java输入5个学员姓名和分数,显示分数最高的学员姓名和分数?...
  9. 未捕获typeerror: $形象。cropper不是函数_没有学不会的python--细说自定义函数的细节...
  10. 一个服务器多个网站多个域名,多个域名一个服务器吗