天天看點

LindAgile~緩存攔截器支援類的虛方法了

之前寫過一個緩存攔截器,主要在方法上添加CachingAspect特性之後,它的傳回值就可以被緩存下來,下次通路時直接從緩存中傳回結果,而它有一個前提,就是你的方法需要是一個接口方法,緩存這個CachingAspect卻需要在類裡定義,大叔感覺很怪,是以抽時間把它完善一下,讓緩存特性在接口方法裡定義。

今天說的是為類裡的虛方法添加CachingAspect,這個事實上我們用的比較多,因為并不是所有方法都需要提取到接口的,隻有那些可能有多态的情況才需要實作這種功能,是以大叔覺得有必要為類的虛方法添加一個緩存攔截的功能。

主要是建立一個新的類,然後讓它繼承被攔截的類型,找到聲明為virtual的方法,然後去override它,我們的攔截器使用了emit實作了建立類,建立方法等功能。

-》程式入口

-》 建立代理

-》建立新程式集

-》建立新子產品

-》建立新類

-》繼承被攔截的類

-》重寫virtual方法

-》添加緩存邏輯

-》傳回

使用它

緩存結果存儲到了redis中間件裡

LindAgile~緩存攔截器支援類的虛方法了

修改了LindAspect的代碼段,對代理服務的完善,對類虛方法的支援!

LindAgile~緩存攔截器支援類的虛方法了

對代理類也進行修改,添加了接口與類的判斷

下一步,大步将再次進行優化,争取早日支援接口方法攔截功能,而不是把攔截特性寫在類裡。

像下面的代碼,既然用了接口,就應該把特性寫在接口方法上,您說是吧!

感謝閱讀!

請關注大叔新寵LindAgile架構!

繼續閱讀