作者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)
1F:推 PsMonkey:贺!出现第五个了,要去 BM_NeedMoney 申请钱了 \囧/ 09/27 21:21
2F:→ sbrhsieh:建议这篇改采load-time weaving的作法 09/28 03:41
3F:→ sbrhsieh:否则有违反规则 0.2 项原则之嫌 09/28 03:43
4F:→ qrtt1:嗯。有违就取消即可。俺也不是真的想参加啊。只是消磨时间 09/28 09:23
5F:推 bleed1979:感谢各位高手的参与,让晚辈开了眼界。 09/28 10:31
6F:→ sbrhsieh:抱歉我看走眼了,直接用 ajc 编译应该没疑问。 09/28 16:10