像@Transactional一样利用注解自定义aop切片
生活随笔
收集整理的這篇文章主要介紹了
像@Transactional一样利用注解自定义aop切片
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在spring中,利用@Transactional注解可以很輕松的利用aop技術進行事物管理。在實際項目中,直接利用自定義注解實現切片可以大大的提高我們的編碼效率以及代碼的簡潔性。
實現以上的目標,主要涉及兩方面工作。
自定義注解
介紹注解自定義的文章比較多,這里簡要介紹一下以下面的代碼為例。該代碼要實現一個分布式鎖的代碼。首先利用@interface來聲明該類為接口類,用@Target來聲明該注解的作用范圍。該例子中ElementType.METHOD, ElementType.TYPE表明該注解作用范圍是方法和類。@Retention注明該注解的作用周期。RetentionPolicy.RUNTIME表明該注解在運行時也是有效的。
package com.whaty.lock.annotation;import org.springframework.stereotype.Component;import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;@Component @Target(value = {ElementType.METHOD, ElementType.TYPE}) @Retention(value = RetentionPolicy.RUNTIME) public @interface Lock {public LockImpl lockImpl() default LockImpl.MYSQL;public enum LockImpl {MYSQL, ZOOKEEPER} }將注解聲明為切片
下面的代碼是實現注解切片邏輯的代碼。其中@Aspect用來聲明切片的實現。在這個代碼里面,最關鍵的一步是
@Around(value = "@annotation(com.whaty.lock.annotation.Lock)")
這個聲明與普通的注解式聲明切片類似,只是其中@annotation表明該切片作用范圍為聲明的注解作用范圍。
轉載于:https://www.cnblogs.com/chenatu/p/10794556.html
總結
以上是生活随笔為你收集整理的像@Transactional一样利用注解自定义aop切片的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MacOs桌面自动被打乱的原因
- 下一篇: C/C++字符串使用整理