spring aop 中@annotation()和自定义注解的使用
在自定義個注解之后,通過這個注解,標注需要切入的方法,同時把需要的參數傳到切面去。那么我們怎么在切面使用這個注解。
我們使用這個自定義注解一方面是為了傳一些參數,另一方面也是為了省事。
具體怎么省事,看我下面的例子就造啦。
一般,別人的切面都是這么寫的
先聲明一個切入點。
切入點聲明OK之后,就是在不同的 advice 里面使用啦。一般都是如下使用。
暫時是不帶注解的
這些切面方法里面的參數。JoinPoint joinPoint,這個是哪個都可以加的。加不加隨意。需要的話就加。是可以用的。
要是帶個咱自定義的注解呢?
我又看到很多人都是如下寫的。
我就不全部帶上了,就以這個after為例,看看是如何寫的吧
按照上面這寫,沒毛病,因為別人都是這么寫的,我也確實驗證啦,這個能拿到咱定義的注解,以及注解上的參數。
還有個寫法,就是不用顯示的聲明切入點,就是那個@Pointcut
先說下這個顯示聲明的好處,就像聲明變量一樣,因為這個切入點表達式是可以用 && || !來組合條件的,這么聲明的話,可以使得代碼簡潔。
直接在各類 advice 通知的參數上面,使用execution來聲明。
例如:
其實,上面的value里面的意思,就是復合那個切入的點的條件, 以&&連接,也就是說2個都符合。
既然咱自定義了注解,就是來干這個切面的,為啥還要對他是哪個包,要限制一下呢,我就把前面的給刪除啦。
最終簡化如下:
代碼依然正常運行。
既然不用加那個包的限制,這切面還是OK的,為啥還要加呢?
我稍微考慮下,估計是這么個原因:
自定義注解命名的時候,可能你取的名字很大眾化,其他的jar包,也就是你項目引入的jar包,可能有重名的注解,如果要是不加包限制的話,那估計就會出現意想不到的效果。所以,我們就看到,那么多的切面代碼,這地方的寫法都是千篇一律 都是使用 && 符號。限制包,然后限制使用的是哪個注解。
總結
以上是生活随笔為你收集整理的spring aop 中@annotation()和自定义注解的使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Jsp和Servlet有什么区别?
- 下一篇: 答辩攻略之二:纯方案赛