我有一个否则会是非常普通的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时会收到NullPointer

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

This post相似,除了我想将POJO添加到托管上下文中。

最佳答案

正如评论所建议的那样,您有2种处理方式

  • 将AsyncActionQueue作为参数传递给QueuedBatch的构造函数。这不需要Spring知道有关QueuedBatch的任何信息,但是可以强制创建QueuedBatch实例时提供依赖项。
  • 用@Component注释QueuedBatch类。并确保在初始化spring上下文时在组件扫描中包含包含QueuedBatch的包。这样,它变成了一个弹簧管理的bean,允许AsyncActionQueue自动连接到其中。您可以根据需要更改QueuedBatch组件的范围。
  • 09-16 00:39