网站首页 > java教程 正文
什么是注解?
注解就是为容器提供元数据,例如@Controller 注解则是标记了该Bean需要交给Spring容器进行管理。
那么我们怎么去实现自个的注解,也就是自定义注解呢?
一、自定义一个注解(MyValidate),使用元注解定义各项用途
二、定义该注解的业务逻辑,这里只实现了注解的一个属性:isNotNull()
然后就就可以愉快的使用了
实际项目中通过拦截器或者切面来实现:
1、定义一个interface,命名为BaseCheck,BaseCheck里面有一个抽象的check方法,check方法返回值是boolean。
2、定义校验的注解,比如:@NotNull、@Length。
3、根据上面的注解,分别定义对应的校验类,比如:NotNullCheck、LengthCheck。
4、NotNullCheck、LengthCheck都需要实现BaseCheck的check方法,你要在check方法里面写校验流程。
5、定义一个容器,在工程启动的时候,把NotNullCheck和LengthCheck的对象塞到里面,
如果你使用spring,直接在NotNullCheck和LengthCheck上面加个注解@Component,也能达到同样的效果。
6、定义一个拦截器或者切面。
7、在这个拦截器或者切面里,拿到请求的参数,也就是那个user对象。
8、通过反射,获取到这个user对象所对应的类,类的名字肯定就是User了。
9、遍历User里面的所有Field,检查每一个Field是否含有注解。
10、遍历Field上的所有注解。
11、假设找到一个注解@NotNull,就去找一下对应的校验类,
BaseCheck baseCheck = 容器.get("NotNullCheck")
或者BaseCheck baseCheck = (BaseCheck) SpringUtl.getBean("NotNullCheck")
12、如果找到,也就是baseCheck不为空,则通过反射获取这个Field的实际值,将这个值作为参数,调用baseCheck.check方法
13、baseCheck.check如果返回false则报错,如果返回true则继续,直到遍历完所有Field、所有注解
觉得喜欢的朋友欢迎关注点赞转发评论哦,您的支持将会是小编的动力之源!
近期导读:
猜你喜欢
- 2024-09-27 在Spring Boot项目中创建和使用自定义注解
- 2024-09-27 这一篇 Java 注解,写得太好了(java注解使用)
- 2024-09-27 学习廖雪峰的JAVA教程---注解(定义注解@interface)
- 2024-09-27 自定义注解妙用,一行代码搞定用户操作日志记录,你学会了吗?
- 2024-09-27 Spring Boot 整合mybatis,使用注解的方式(自动生成注解)
- 2024-09-27 面试官:实际工作中哪里用到了自定义注解?
- 2024-09-27 使用自定义注解和切面AOP实现Java程序增强
- 2024-09-27 Java-注解有什么用?该怎么用?(java 注解的作用)
- 2024-09-27 Java 17中的元注解:自定义注解的行为
- 2024-09-27 自定义注解你真会用吗?(说说自定义注解的场景及实现)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)