05_自定义注解校验参数
2021/7/19 6:09:34
本文主要是介绍05_自定义注解校验参数,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
用于某些特殊的参数校验
1.自定义注解@Documented @Target(ElementType.FIELD) @Retention(RetentionPolicy.RUNTIME) public @interface NotNull { //字段名称 String name() default "字段"; //提示信息 String message() default "不能为空"; }
2.被校验的实体
public class User { @NotNull(name="学号" message = "不能为空") public String id; @NotNull(name="姓名" message = "不能为空") public String name; }
3.校验逻辑示例
public class ParamValid { public static check(Object obj) throws Throwable { Field[] fields = obj.getClass().getDeclaredFields(); for (Field field : fields) { boolean note = field.isAnnotationPresent(NotNull.class); if (note) { NotNull notNull = field.getAnnotation(NotNull.class); String annoName = notNull.name(); String annomessage = notNull.message(); String fieldName = field.getName(); ObjectMapper mapper=new ObjectMapper(); String json = mapper.writeValueAsString(body); Object fileValue = new Gson().fromJson(json, Map.class).get(fieldName); if(StringUtils.isEmpty(fileValue ))){ throw new RuntimeException(annoName +annomessage); } } } } }4.在需要处进行校验
ParamValid.check(obj);
这篇关于05_自定义注解校验参数的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-04百万架构师第六课:设计模式:策略模式及模板模式
- 2025-01-04百万架构师第七课:设计模式:装饰器模式及观察者模式
- 2025-01-04适用于企业管理的协作工具API推荐
- 2025-01-04挑战16:被限流的CPU
- 2025-01-03企业在选择工具时,如何评估其背后的技术团队
- 2025-01-03Angular中打造动态多彩标签组件的方法
- 2025-01-03Flask过时了吗?FastAPI才是未来?
- 2025-01-0311个每位开发者都应知道的免费实用网站
- 2025-01-03从REST到GraphQL:为什么以及我是如何完成转型的
- 2025-01-03掌握RAG:从单次问答到连续对话