摘要: 在結(jié)束了上一篇Spring 1.x中AOP的使用之后,我用馬不停蹄的打開Eclipse,做著Spring2.X下了AOP的Sample。在上一篇文章中的配置過程中,由于對(duì)自動(dòng)代理不是很熟,出現(xiàn)了循環(huán)引用的異常信息。當(dāng)初在閱讀PicoContainer源碼時(shí)看到循環(huán)引用不以為然,后來在學(xué)習(xí)AspectJ時(shí)小有印象,這次在折騰了半個(gè)多小時(shí)后可加深了印象。 閱讀全文
AOP
摘要: 本文通過一個(gè)“Hello World”級(jí)別的橫切性功能介紹Spring1.X中AOP的使用,并結(jié)合Spring的經(jīng)典的聲明式事務(wù)管理給出Spring AOP配置中的經(jīng)典方案。在Spring2出來以后,Spring1.X的AOP使用方式已經(jīng)“不合時(shí)宜”了,因此如果你是在新項(xiàng)目中采用Spring AOP,建議使用Spring2中的AOP使用方式。關(guān)于Spring2.X中AOP的使用,參考該文的姊妹文章Spring2.X中AOP的使用。
一提到AOP的應(yīng)用,人們就會(huì)本能地提起日志功能,它就像一門語言的“Hello World”一樣被人們無數(shù)次提起。也許有人會(huì)疑問除了“不實(shí)用”的日志功能,AOP還能做些什么?可能在很多時(shí)候我們并不需要自己實(shí)現(xiàn)一個(gè)AOP功能,尤其是在擁有了很多優(yōu)秀的AOP應(yīng)用框架來解決通用的橫切性問題的情況下(比如Spring的事務(wù)管理、比如Acegi的安全管理、比如WebWork的攔截功能)。但問題總是層出不窮的,總會(huì)有些問題可能需要我們自己AOP一下。 閱讀全文
一提到AOP的應(yīng)用,人們就會(huì)本能地提起日志功能,它就像一門語言的“Hello World”一樣被人們無數(shù)次提起。也許有人會(huì)疑問除了“不實(shí)用”的日志功能,AOP還能做些什么?可能在很多時(shí)候我們并不需要自己實(shí)現(xiàn)一個(gè)AOP功能,尤其是在擁有了很多優(yōu)秀的AOP應(yīng)用框架來解決通用的橫切性問題的情況下(比如Spring的事務(wù)管理、比如Acegi的安全管理、比如WebWork的攔截功能)。但問題總是層出不窮的,總會(huì)有些問題可能需要我們自己AOP一下。 閱讀全文
摘要: call和execution的指示符分別為call(Method-Signature)、execution(Method-Signature),匹配方法簽名的方法或構(gòu)造函數(shù)的執(zhí)行。對(duì)于call來說,調(diào)用的連接點(diǎn)位于方法調(diào)用點(diǎn)的調(diào)用代碼處;對(duì)于execution來說,執(zhí)行的連接點(diǎn)位于方法執(zhí)行的位置。也就是說,call和execution的重要區(qū)別在于它們傳遞了哪些類型給AspectJ編譯器以用來與aspect進(jìn)行鏈接。 閱讀全文
摘要: target切入點(diǎn)格式如下:target([Type|Identifier])。Type指示對(duì)連接點(diǎn)處的對(duì)象類型提供一個(gè)靜態(tài)編譯時(shí)評(píng)估,并采用完全限定類名的形式(也就是說,Type不能是使用通配符的類型聲明模式)。Identifier提供了一種方法,可通過它來評(píng)估連節(jié)點(diǎn)處的運(yùn)行時(shí)對(duì)象的實(shí)際類型,而不僅僅是靜態(tài)類型。 Identifier在運(yùn)行時(shí)動(dòng)態(tài)地賦予合適的對(duì)象。 閱讀全文
摘要: 讓我好好想想,AspectJ中最常用的切入點(diǎn)是什么?哦,也許是call(Method-Signature)吧。這是個(gè)相對(duì)簡單的方法簽名。實(shí)際上,方法簽名的完整形式如下:
[modifiers] [returnTypePattern] [DeclaredTypePattern.]methodName([Parameters])[throws TypePattern],其中方括號(hào)中的簽名組件是可選的。modifiers 為修飾符模式,returnTypePattern 為返回類型模式,DeclaredTypePattern 為類型聲明模式,methodName 為方法名稱,Parameters 為方法參數(shù),throws TypePattern 為throw字句。該文僅僅介紹 DeclaredTypePattern,因?yàn)橄啾戎缕渌J奖容^簡單的多。
閱讀全文
[modifiers] [returnTypePattern] [DeclaredTypePattern.]methodName([Parameters])[throws TypePattern],其中方括號(hào)中的簽名組件是可選的。modifiers 為修飾符模式,returnTypePattern 為返回類型模式,DeclaredTypePattern 為類型聲明模式,methodName 為方法名稱,Parameters 為方法參數(shù),throws TypePattern 為throw字句。該文僅僅介紹 DeclaredTypePattern,因?yàn)橄啾戎缕渌J奖容^簡單的多。
閱讀全文