2011-10-12 87 views
2

我有一個記錄器的Bean是被注入的,無論我想記錄是這樣的:以下this博客如何在非託管對象中獲得託管bean?

@Logger 
Log log; 

現在我想也可以在非託管對象中使用該記錄器bean。如何讓這個對象知道有一個託管記錄器在那裏使用?

我讀過的地方,使用ApplicationContext是不好的做法。但也許這是唯一的方法?如果是這樣,那麼最好的辦法是什麼? This似乎是要走的路.. ..?

謝謝!

回答

1

如果你真的無法管理bean(通過聲明它在applicationContext.xml), 是的,它是兩種方法之一。在Web應用程序中,使用WebApplicationContextUtils來獲取應用程序上下文。

另一種方法是使用@Configurable與aspectj編織,這將使您的非託管對象管理。但我更喜歡第一個選項。

+0

是的,像這樣使用WebContext'WebApplicationContext context = ContextLoader.getCurrentWebApplicationContext();'是我的第一個想法。 然而,有問題的模塊(實現一些彈簧安全接口)應該是獨立的(即使它將用於Web應用程序)。此外,這意味着必須在我的單元測試中模擬一個Web上下文來測試某些我不太喜歡的日誌。但嗯..因爲使對象管理不是一種選擇可能是多數民衆贊成我唯一的希望.. – Pete