2012-07-03 90 views
1

我目前正在開發一個OSGi項目,其中一些部分完美適用於AOP編程。如果沒有AOP與OSGi結合的許多經驗,我想知道如何在OSGi環境中最好地執行AOP?我讀過一些關於這個問題的文章,但沒有找到適合我的解決方案。例如,AspectJ有一個Equinox孵化器項目,但最後一個版本是在2008年。但由於我使用Apache Felix和Bnd(工具),我想避免使用Equinox的某些東西。順便說一句,編織過程的一個要求是它應該處於編譯時,並且可能還需要稍後的加載時間。此外,我使用Ant和Bnd來構建捆綁包。所以如果我可以將Aspectj集成到這個構建過程中,那將是非常棒的。如何在Apache Felix中實現OSGi中的AOP

希望有人可以與這樣的用例分享經驗。

編輯

總結迄今:

  • 沒有使用Spring AOP基督教施奈德在他的回答中提到的(但pityful不是我期待的)
的可能性

回答

1

我想你可以看看白羊座的JPA。加載時間編織最近在那裏添加。似乎在新的OSGi規範中也有一個編織鉤。因此,現在對AspectJ等的支持可能是非常有可能的。儘管我還沒有看到它的實際情況。

一個很大的問題當然是。爲什麼你需要AOP,你想用它做什麼? 一般來說,AOP在大多數情況下看起來比現在簡單,並且給你起初的益處。所以我的建議是在使用AOP之前要小心並且三思而後行。

+0

嗨基督教徒。 Thx爲您的答覆。在我看來,Aries更適合於使用數據源的JPA用例。但說實話,也許它解決了另一個問題,所以儘管提及它;)關於AOP:我想要使用它的一個案例將是許多標準的日誌記錄過程。此外,一些安全問題也是完美匹配的。當然,我可以在不使用方面的情況下解決問題,但避免冗餘/錯誤代碼會很好。但是你是對的,我必須小心不要過度使用AOP。 –

+0

我強烈建議不要使用完整的AOP,因爲它很容易失控。什麼工作得很好,就是在使用接口注入的類上使用方面。在這種情況下,您可以使用動態代理而不是字節碼操作。例如,spring允許在界面邊界上執行安全性,日誌記錄和事務處理。這在OSGi中也可以很好地工作。我個人從不需要使用更多的東西。唯一的例外是jpa,但這些情況下有專門的庫。 –

+0

您能否提供更多描述的鏈接? –

相關問題