2010-03-18 70 views
4

我在使用Spring AOP(即ProxyFactoryBean)的傳統應用程序上工作。如何在類上創建一個方面,這不是使用Spring AOP的bean?

我需要在某個類的方法周圍添加一個方面。這個類是而不是一個bean。 的AspecjJ切入點表達式會是這樣的: execution(* xyz.package.Class.method())

我創建了一個MethodInterceptorAspectJExpressionPointcut,但我不知道如何讓這兩個一起工作。

編輯
我沒有源代碼,這個類,它是一個第三方庫。這個類的實例不是由我創建的,無論是在源代碼中,還是在spring配置中都不是bean。它由圖書館在內部使用。

任何幫助表示讚賞。

+1

難道你不能把類包裝在*是bean的東西里嗎? – skaffman

+1

那麼,我有連接池,那就是這個bean,它的所有內部對象都是用這個bean(沒有setter)創建的。我想創建日誌記錄方面,這將記錄從數據庫獲取連接所需的時間。這是其中一個內部對象的方法。 –

+0

所以目前,你如何獲得對這個類(的一個實例)的引用?無論如何,我認爲與AspectJ和一些AroundAdvice你可以做一些分析這個應用程序。 Spring不需要使用AspectJ –

回答

3

您可以使用加載時織入,並使用完整的AspectJ支持(如here所述),它不需要訪問被建議的類的源,也不需要控制其實例化(儘管它需要<context:load-time-weaver />以及編織器本身使用-javaagent:...other methods) 。

3

嘗試@Configurable。這在this docs中有解釋。

@Configurable註解標記了一個類可以通過Spring驅動的配置

(你需要<context:load-time-weaver />

更新 你可以讓一個第三方組件豆通過將它列爲applicationContext.xml作爲<bean class=".." />(您不需要@Configurable

+0

我沒有這個類的源代碼,它是第三方庫。 –

+0

那麼爲什麼不把它添加到applicationContext.xml? (請參閱我的更新) – Bozho

+0

好的,但是我怎樣才能在bean上添加@Configurable就像那樣? –

相關問題