2011-05-23 82 views
4

我們既可以使用@AspectJ註釋樣式來定義方面,也可以使用AspectJ Java擴展語言,這需要我們使用ajc編譯器。AspectJ - 爲什麼使用註釋而不是ajc編譯器?

想要使用註釋樣式而不是ajc的原因是什麼?在我看來,很多功能是通過使用註釋風格放棄的,但是獲得的功能並不多(如果有的話),除了不必使用ajc(使用ajc有什麼不好之處?)

可以有人請在這個話題上給我啓發?

回答

4

兩種款式(.aj@AspectJ)都具有其他不能做的功能。

看到這個職位的東西註釋可以這樣做聲明的AspectJ不能:What is the AspectJ declaritive syntax for overwritting an argument

.aj文件大部分(上述以外的)可以做更多的方式。 最值得注意的是他們可以做ITD(類型間定義又稱爲向類中添加方法和屬性)。

您希望使用@AspectJ的最大原因是,如果您使用Spring代理AOP支持,它甚至不需要編譯時織入(CTW)甚至加載時間(LTW)。 Spring將模仿@AspectJ,但在運行時通過創建代理。

我注意到Spring,Eclipse(和我自己)似乎鼓勵更多地使用真正的AspectJ。我相信這是因爲Eclipse插件變得非常好。此外,通過真正的AspectJ和@Configurable註釋,您可以在實例化的bean上獲得Spring接線。這就是Spring Roo的工作原理。

使用Eclipse AspectJ IDE插件,您可以看到對兩種樣式(@和aj)的切入點引用,並且清楚地知道發生了什麼「魔術」。

2

在構建過程中添加一些額外步驟並不是最簡單和最好的方法。特別是當你有大項目時。你遠離所有的Java工具和IDE支持,它們可能不支持* .aj語法。