国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

像@Transactional一樣利用注解自定義aop切片

zhangke3016 / 2862人閱讀

摘要:像一樣利用注解自定義切片在中,利用注解可以很輕松的利用技術(shù)進(jìn)行事物管理。表明該注解在運(yùn)行時(shí)也是有效的。其中用來聲明切片的實(shí)現(xiàn)。在這個(gè)代碼里面,最關(guān)鍵的一步是這個(gè)聲明與普通的注解式聲明切片類似,只是其中表明該切片作用范圍為聲明的注解作用范圍。

像@Transactional一樣利用注解自定義aop切片

在spring中,利用@Transactional注解可以很輕松的利用aop技術(shù)進(jìn)行事物管理。在實(shí)際項(xiàng)目中,直接利用自定義注解實(shí)現(xiàn)切片可以大大的提高我們的編碼效率以及代碼的簡潔性。

實(shí)現(xiàn)以上的目標(biāo),主要涉及兩方面工作。

自定義注解

將注解聲明為切片

自定義注解

介紹注解自定義的文章比較多,這里簡要介紹一下以下面的代碼為例。該代碼要實(shí)現(xiàn)一個(gè)分布式鎖的代碼。首先利用@interface來聲明該類為接口類,用@Target來聲明該注解的作用范圍。該例子中ElementType.METHOD, ElementType.TYPE表明該注解作用范圍是方法和類。@Retention注明該注解的作用周期。RetentionPolicy.RUNTIME表明該注解在運(yùn)行時(shí)也是有效的。

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
    }
}
將注解聲明為切片

下面的代碼是實(shí)現(xiàn)注解切片邏輯的代碼。其中@Aspect用來聲明切片的實(shí)現(xiàn)。在這個(gè)代碼里面,最關(guān)鍵的一步是
@Around(value = "@annotation(com.whaty.lock.annotation.Lock)")
這個(gè)聲明與普通的注解式聲明切片類似,只是其中@annotation表明該切片作用范圍為聲明的注解作用范圍。

package com.whaty.lock.aspect;

import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.stereotype.Component;

@Component
@Aspect
public class LockAspect {
    @Around(value = "@annotation(com.whaty.lock.annotation.Lock)")
    void execute(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {
        // 嘗試獲取鎖
        proceedingJoinPoint.proceed();
        // 釋放鎖
    }
}

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/64987.html

相關(guān)文章

  • Spring知識(shí)——事務(wù)解析

    摘要:編程式事務(wù)指的是通過編碼方式實(shí)現(xiàn)事務(wù)聲明式事務(wù)基于將具體業(yè)務(wù)邏輯與事務(wù)處理解耦。聲明式事務(wù)管理使業(yè)務(wù)代碼邏輯不受污染因此在實(shí)際使用中聲明式事務(wù)用的比較多。聲明式事務(wù)有兩種方式,一種是在配置文件中做相關(guān)的事務(wù)規(guī)則聲明,另一種是基于注解的方式。 事務(wù)管理是應(yīng)用系統(tǒng)開發(fā)中必不可少的一部分。Spring 為事務(wù)管理提供了豐富的功能支持。Spring 事務(wù)管理分為編碼式和聲明式的兩種方式。編程式...

    tuomao 評論0 收藏0
  • 【Spring】一次線上@Transational事務(wù)注解未生效的原因探究

    摘要:由于的限制,無法替換被代理類已經(jīng)被載入的字節(jié)碼,只能生成并載入一個(gè)新的子類作為代理類,被代理類的字節(jié)碼依然存在于中。區(qū)別于前兩者,是一種靜態(tài)代理的實(shí)現(xiàn),即在編譯時(shí)或者載入類時(shí)直接修改被代理類文件的字節(jié)碼,而非運(yùn)行時(shí)實(shí)時(shí)生成代理。 現(xiàn)象描述 上周同事發(fā)現(xiàn)其基于mySql實(shí)現(xiàn)的分布式鎖的線上代碼存在問題,代碼簡化如下: @Controller class XService { @A...

    姘存按 評論0 收藏0
  • 學(xué)Aop?看這篇文章就夠了!!!

    摘要:又是什么其實(shí)就是一種實(shí)現(xiàn)動(dòng)態(tài)代理的技術(shù),利用了開源包,先將代理對象類的文件加載進(jìn)來,之后通過修改其字節(jié)碼并且生成子類。 在實(shí)際研發(fā)中,Spring是我們經(jīng)常會(huì)使用的框架,畢竟它們太火了,也因此Spring相關(guān)的知識(shí)點(diǎn)也是面試必問點(diǎn),今天我們就大話Aop。特地在周末推文,因?yàn)樵撈恼麻喿x起來還是比較輕松詼諧的,當(dāng)然了,更主要的是周末的我也在充電學(xué)習(xí),希望有追求的朋友們也盡量不要放過周末時(shí)...

    boredream 評論0 收藏0
  • 在同一個(gè)類中調(diào)用另一個(gè)方法沒有觸發(fā) Spring AOP 的問題

    摘要:起因考慮如下一個(gè)例子定義在這個(gè)例子中我們定義了一個(gè)注解這個(gè)是一個(gè)方法注解我們的期望是當(dāng)有此注解的方法被調(diào)用時(shí)需要執(zhí)行指定的切面邏輯即執(zhí)行方法在類中方法被所注解因此調(diào)用方法時(shí)應(yīng)該會(huì)觸發(fā)方法的調(diào)用不過有一點(diǎn)我 起因 考慮如下一個(gè)例子: @Target(value = {ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) @Doc...

    yimo 評論0 收藏0
  • 慕課網(wǎng)_《Spring入門篇》學(xué)習(xí)總結(jié)

    摘要:入門篇學(xué)習(xí)總結(jié)時(shí)間年月日星期三說明本文部分內(nèi)容均來自慕課網(wǎng)。主要的功能是日志記錄,性能統(tǒng)計(jì),安全控制,事務(wù)處理,異常處理等等。 《Spring入門篇》學(xué)習(xí)總結(jié) 時(shí)間:2017年1月18日星期三說明:本文部分內(nèi)容均來自慕課網(wǎng)。@慕課網(wǎng):http://www.imooc.com教學(xué)示例源碼:https://github.com/zccodere/s...個(gè)人學(xué)習(xí)源碼:https://git...

    Ververica 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<