所以我想在我的應用程序中使用AOP進行日誌記錄和一些錯誤處理。 大多數人推薦使用aspectj,所以我的問題是爲什麼aspectj要求我安裝一個eclipse插件才能使用它? 沒有aspectj在運行時只是使用反射來修改類?Java - 爲什麼aspectj需要安裝插件?
我們也在使用構建服務器,是否需要在構建服務器上安裝任何東西以便使用aspectj來運行項目?
所以我想在我的應用程序中使用AOP進行日誌記錄和一些錯誤處理。 大多數人推薦使用aspectj,所以我的問題是爲什麼aspectj要求我安裝一個eclipse插件才能使用它? 沒有aspectj在運行時只是使用反射來修改類?Java - 爲什麼aspectj需要安裝插件?
我們也在使用構建服務器,是否需要在構建服務器上安裝任何東西以便使用aspectj來運行項目?
它不會,除非您特別想讓Eclipse具有方面感知能力,並且在其內部構建過程中包含AspectJ功能。 (國際海事組織對IDE的支持非常棒,並且使得AOP更容易處理,單獨的排水溝標記值得入場。)
AspectJ修改字節碼;你不能通過純粹的反射來做它,
你的構建服務器需要適當的庫。如果您正在進行編譯時編織,那麼需要將其添加到構建腳本中。
Aspect-J使用代理通過所謂的加載時織造來修改類。這是必需的,因爲java-proxies只能用於接口。代理用額外的(字節)代碼增加類。
編輯:插件通常會提供額外的功能來定義和審查點切口和連接點。
不,您不需要任何插件來編譯/運行使用AOP編寫的代碼。
確實需要在編譯/運行應用程序時添加類路徑信息。
例如,你可以看看here。它使用ant添加aspectj jars來運行示例。當然,它不需要插件來運行AspectJ代碼。
關於插件&蝕:這是給予日食主意,瞭解AspectJ的代碼,而不是混淆爲無效的Java代碼。
如果你有一個Maven項目,你只需要放置一些依賴來處理Aspect。 我正在使用Netbeans並使用AspectJ,它完美地工作。沒有插件來安裝。
這並沒有回答爲什麼需要Eclipse插件的問題。 –
@MatthewFarwell謝謝,補充 – stacker