invoke方法中,首先根據key查詢快取(key=classname + methodname + arguments)
,快取中存在則返回,否之呼叫invocation.proceed()返回結果.
在spring配置檔案中定義***
id="methodcacheinterceptor"
class=
"org.taha.interceptor.methodcacheinterceptor"
>
name=
"cache"
>
local=
"methodcache"
/>
id="methodcachepointcut"
class=
"org.springframework.aop.support.regexpmethodpointcutadvisor"
>
name=
"advice"
>
local=
"methodcacheinterceptor"
/>
name=
"patterns"
>
.*methodone
.*methodtwo
id="mybean"
class=
"org.springframework.aop.framework.proxyfactorybean"
>
name=
"target"
>
class=
"org.taha.beans.mybean"
/>
name=
"interceptornames"
>
methodcachepointcut
這裡org.springframework.aop.support.
regexpmethodpointcutadvisor是乙個正規表示式切入點,
使用perl 5的正規表示式的語法, 基jakarta oro。(有空寫個文件,自己研究一下).
name=
"target"
>
class=
"org.taha.beans.mybean"
/>
org.taha.beans.mybean是我們需要做快取處理的類.
methodcachepointcut中
.*methodone
.*methodtwo
則是指定的模式匹配方法,對應於org.taha.beans.mybean中的方法. 這裡指定了2個方法需要做快取處理.
呵呵,就是這麼簡單.這樣每次對org.taha.beans.mybean的methodone方法進行呼叫,都會首先從快取查詢,
其次才會查詢資料庫. 這樣我就不需要在xx.hbm.xml來指定討厭的cache了.也不需要在開發階段來關心快取.
一切aop搞定.. ^_^
利用Spring AOP機制攔截方法一例
直接上 aspect for aop component for auto scan order 0 execute before transactional public class messageinterceptor before messageinsertaspect after messa...
利用spring AOP 實現 sql注入檢測
轉 什麼是sql注入?所謂sql注入,就是通過把sql命令插入到web表單提交或輸入網域名稱或頁面請求的查詢字串,最終達到欺騙伺服器執行惡意的sql命令。具體來說,它是利用現有應用程式,將 惡意的 sql命令注入到後台資料庫引擎執行的能力,它可以通過在web表單中輸入 惡意 sql語句得到乙個存在安...
mybatis快取利用
mybatis資料快取可分為一級快取 二級快取 一級快取是session會話級別的快取,位於表示一次資料庫會話的sqlsession物件之中,又被稱之為本地快取。一級快取是mybatis內部實現的乙個特性,使用者不能配置,預設情況下自動支援的快取,使用者沒有定製它的權利 不過這也不是絕對的,可以通過...