元旦加班写SpringBoot自定义注解

本文介绍了SpringBoot中自定义注解的原理和使用,通过AOP实现注解驱动的日志功能。作者从Java元注解开始,解释了注解的声明和作用,并展示了如何结合AOP和动态代理实现注解的功能。文章以一个简单的日志记录为例,演示了自定义注解的定义、应用及测试过程,帮助读者理解注解的神奇之处。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

写在前面

这个点我们公司的人走的已经差不多了,原因很简单呀,明天元旦嘛,放假前可是不加班的,很nice,实习生的我,今天给大家分享一篇springboot自定义注解的技术文章。

很牛逼的注解

开发过程中,想必大家都用过或听过注解吧,加个注解万事大吉,但是为什么这么厉害呢,底层葫芦里到底装的什么药,今天我们就切开葫芦看看瓢。

离不开的Java新特性

用springboot注解的时候,感觉,哇spring好厉害,殊不知,点进去看源码,是JDK注解的功劳呀,首先看看,Component注解,上面三个都是JDK的注解,也就是元注解。@Indexed是啥呢,这个是索引的东西,暂不讨论。

在这里插入图片描述

令人好奇的东西

我最初的时候,就这样写一个注解,他就能生效了吗,哈哈哈,太天真了吧,其实还有一个牛逼的操作呢,该注解的作用,逻辑在哪写呢,这个时候AOP思想可以善良登场了,我们可以通过一个切面的思想来解决。(聊点题外话,切面怎么实现的呢,答案是动态代理,那动态代理是怎么实现的呢,是通过JDK或CGLIB实现的,那问题来了,JDK和CGLIB又是怎么实现的呢,恕我直言,我也不知道。)

强大的AOP

面试的时候,经常问到AOP的问题,但是水水的我总是说,AOP定义一个切面可以实现日志的功能,天天都是这样回答,我都有点不耐烦了,今天来点特殊的,还是日志,但是这次用注解实现。

既然用注解实现AOP,那首先需要定义一个注解吧,怎么定义呢,模仿别人。
在这里插入图片描述
注解定义好了,里面的参数简单说一下,这里着重讲解如何自定义注解。
lementType.METHOD这个意思是用到方法上的注解
RetentionPolicy.RUNTIME这个是运行时生效的
@Documented这个就是生成javadoc的东西了
注解定义好了,那接下来干什么呢,当然是让该注解生效了,怎么生效呢,AOP可以出现了。
在这里插入图片描述
里面的注释这么多,我就不多bb了。
然后就可以测试了呀。是不是很简单,我也觉得,难的东西都是别人实现好的。。。有能力,可以研究一下@Aspect的底层实现,或者是等我发布文章,我们一起探讨,撤远了,测一下吧。
在这里插入图片描述
通过一个controller,只需要加一个@MyLog即可。
在这里插入图片描述
可以清楚的看到,已经生效了,注解的神奇之处还有很多,这只是一个入门,今天的内容就到这里了,祝大家元旦快乐!我们下期再见~

评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

贺志营

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值