寫在前面
這個點我們公司的人走的已經差不多了,原因很簡單呀,明天元旦嘛,放假前可是不加班的,很nice,實習生的我,今天給大家分享一篇springboot自定義注解的技術文章。
自定義注解的使用場景、很牛逼的注解
開發過程中,想必大家都用過或聽過注解吧,加個注解萬事大吉,但是為什么這么厲害呢,底層葫蘆里到底裝的什么藥,今天我們就切開葫蘆看看瓢。
離不開的Java新特性
spring自定義注解,用springboot注解的時候,感覺,哇spring好厲害,殊不知,點進去看源碼,是JDK注解的功勞呀,首先看看,Component注解,上面三個都是JDK的注解,也就是元注解。@Indexed是啥呢,這個是索引的東西,暫不討論。
令人好奇的東西
java自定義表單、我最初的時候,就這樣寫一個注解,他就能生效了嗎,哈哈哈,太天真了吧,其實還有一個牛逼的操作呢,該注解的作用,邏輯在哪寫呢,這個時候AOP思想可以善良登場了,我們可以通過一個切面的思想來解決。(聊點題外話,切面怎么實現的呢,答案是動態代理,那動態代理是怎么實現的呢,是通過JDK或CGLIB實現的,那問題來了,JDK和CGLIB又是怎么實現的呢,恕我直言,我也不知道。)
強大的AOP
面試的時候,經常問到AOP的問題,但是水水的我總是說,AOP定義一個切面可以實現日志的功能,天天都是這樣回答,我都有點不耐煩了,今天來點特殊的,還是日志,但是這次用注解實現。
自定義注解方法名,既然用注解實現AOP,那首先需要定義一個注解吧,怎么定義呢,模仿別人。
注解定義好了,里面的參數簡單說一下,這里著重講解如何自定義注解。
lementType.METHOD
這個意思是用到方法上的注解
RetentionPolicy.RUNTIME
這個是運行時生效的
@Documented
這個就是生成javadoc的東西了
注解定義好了,那接下來干什么呢,當然是讓該注解生效了,怎么生效呢,AOP可以出現了。
里面的注釋這么多,我就不多bb了。
然后就可以測試了呀。是不是很簡單,我也覺得,難的東西都是別人實現好的。。。有能力,可以研究一下@Aspect的底層實現,或者是等我發布文章,我們一起探討,撤遠了,測一下吧。
通過一個controller,只需要加一個@MyLog
即可。
可以清楚的看到,已經生效了,注解的神奇之處還有很多,這只是一個入門,今天的內容就到這里了,祝大家元旦快樂!我們下期再見~
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态