Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.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 如何将POJO添加到Spring上下文以启用注入依赖项?_Java_Spring_Dependency Injection_Pojo - Fatal编程技术网

Java 如何将POJO添加到Spring上下文以启用注入依赖项?

Java 如何将POJO添加到Spring上下文以启用注入依赖项?,java,spring,dependency-injection,pojo,Java,Spring,Dependency Injection,Pojo,我有一个类,否则它将是一个非常通用的POJO,但我希望在其中注入依赖项,因为我希望避免将该依赖项作为(构造函数)参数传递: //no managed context annotation because it's a simple POJO public class QueuedBatch { //however, I would like to inject the context managed bean below @Autowired AsyncActionQu

我有一个类,否则它将是一个非常通用的POJO,但我希望在其中注入依赖项,因为我希望避免将该依赖项作为(构造函数)参数传递:

//no managed context annotation because it's a simple POJO
public class QueuedBatch {

    //however, I would like to inject the context managed bean below
    @Autowired
    AsyncActionQueue asyncActionQueue;
目前,在部署时没有抛出异常,但运行时
asyncActionQueue
为null,因此当我点击POJO时,我会得到一个
null指针

如何注释我的POJO以将其添加到Spring托管上下文中,以便将依赖项注入其中
AsyncActionQueue
是一个单例,我不希望将它作为(构造函数)参数传递给
QueuedBatch


类似,只是我想将我的POJO添加到托管上下文中。

正如注释所示,您有两种方法来处理此问题

  • 将AsyncActionQueue作为参数传递到QueuedBatch的构造函数中。这并不要求Spring了解任何有关QueuedBatch的信息,而是强制执行在创建QueuedBatch实例时提供的依赖关系

  • 用@Component注释QueuedBatch类。并确保在初始化spring上下文时,包含QueuedBatch的包包含在组件扫描中。这样,它就变成了一个spring管理的bean,允许AsyncActionQueue自动连接到其中。您可以根据需要更改QueuedBatch组件的范围


  • 将其注释为@组件;它不在Spring的控制之下。如果您调用new来创建它,那么Spring对它也一无所知。您是说将
    QueuedBatch
    注释为
    @组件
    ?Spring不管理未注释供Spring使用的普通对象。所以Spring对它们一无所知,所以不能直接将bean注入非托管类。在这里使用将是有用的。是的,我是。我还建议您重新考虑“不要将其作为构造函数参数传递”。要么所有的部分都在Spring的控制之下,要么它们都不在Spring的控制之下。您不能要求Spring注入通过调用new创建的POJO bean。