作者qrtt1 (有些事,有時候。。。)
看板java
標題[投稿123] aspectj 版
時間Fri Sep 27 21:05:18 2013
1. 同樣使用版上的 source code
public class Output123 {
public static void main(String[] args) {
char[] ch = new char[]{1,2,3};
System.out.println(String.valueOf(ch));
}
}
2. 使用 around advice 但不執行 proceed()
qty:project123_aop qrtt1$ cat Output123Aspect.aj
public aspect Output123Aspect {
pointcut select_main() : execution( * Output123.main(..));
void around(): select_main(){
System.out.println("123");
}
}
3. 編譯它(使用 ajc)
qty:project123_aop qrtt1$ ajc Output123.java Output123Aspect.aj
qty:project123_aop qrtt1$ ls -alh
total 32
drwxr-xr-x 6 qrtt1 staff 204B 9 27 21:02 .
drwx------+ 22 qrtt1 staff 748B 9 27 21:00 ..
-rw-r--r-- 1 qrtt1 staff 1.5K 9 27 21:02 Output123.class
-rw-r--r-- 1 qrtt1 staff 164B 9 27 20:50 Output123.java
-rw-r--r-- 1 qrtt1 staff 176B 9 27 21:00 Output123Aspect.aj
-rw-r--r-- 1 qrtt1 staff 2.9K 9 27 21:02 Output123Aspect.class
4. 用 jvm 執行它
qty:project123_aop qrtt1$ java Output123
123
PS. 要有 aspectjrt.jar 在 classpath
example:
CLASSPATH=:/Users/qrtt1/app/aspectj1.7/lib/aspectjrt.jar
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 36.231.155.177
※ 編輯: qrtt1 來自: 36.231.155.177 (09/27 21:08)
推 PsMonkey:賀!出現第五個了,要去 BM_NeedMoney 申請錢了 \囧/ 09/27 21:21
→ sbrhsieh:建議這篇改採load-time weaving的作法 09/28 03:41
→ sbrhsieh:否則有違反規則 0.2 項原則之嫌 09/28 03:43
→ qrtt1:嗯。有違就取消即可。俺也不是真的想參加啊。只是消磨時間 09/28 09:23
推 bleed1979:感謝各位高手的參與,讓晚輩開了眼界。 09/28 10:31
→ sbrhsieh:抱歉我看走眼了,直接用 ajc 編譯應該沒疑問。 09/28 16:10