Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在非托管对象中获取托管bean?_Java_Spring - Fatal编程技术网

Java 如何在非托管对象中获取托管bean?

Java 如何在非托管对象中获取托管bean?,java,spring,Java,Spring,我有一个Logger Bean,它被注入到我想记录的任何地方,如下所示: @Logger Log log; 下面是我的博客 现在,我还希望能够在非托管对象中使用该记录器bean。如何使此对象意识到有一个托管记录器可供使用 我在某个地方读到过,使用ApplicationContext是一种糟糕的做法。但也许这是唯一的办法?如果是这样,最好的方法是什么?似乎是要走的路 谢谢 如果您不能真正管理bean(通过在applicationContext.xml中声明它), 是的,这是两种方式之一。在web

我有一个Logger Bean,它被注入到我想记录的任何地方,如下所示:

@Logger
Log log;
下面是我的博客

现在,我还希望能够在非托管对象中使用该记录器bean。如何使此对象意识到有一个托管记录器可供使用

我在某个地方读到过,使用ApplicationContext是一种糟糕的做法。但也许这是唯一的办法?如果是这样,最好的方法是什么?似乎是要走的路


谢谢

如果您不能真正管理bean(通过在
applicationContext.xml
中声明它), 是的,这是两种方式之一。在web应用程序中,使用
WebApplicationContextUtils
获取应用程序上下文


另一种方法是在aspectj编织中使用
@Configurable
,这将使非托管对象成为托管对象。但是我还是喜欢第一个选项。

是的,像这样使用WebContext
WebApplicationContext context=ContextLoader.getCurrentWebApplicationContext()也是我的第一个想法。然而,所讨论的模块(实现一些spring安全接口)应该是独立的(即使它将在web应用程序中使用)。这也意味着我必须在单元测试中模拟Web上下文,以测试我不太喜欢的特定日志。但是嗯。。因为管理对象不是一个选项,所以这可能是我唯一的希望。。