2011-10-12 86 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