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

时间:2016-09-06 15:44:16

标签: 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
    AsyncActionQueue asyncActionQueue;

目前,在部署时没有抛出异常,但asyncActionQueue在运行时为空,所以当我点击POJO时我得到NullPointer

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

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

1 个答案:

答案 0 :(得分:2)

正如评论所示,你有2种方法来处理这个

  1. 将AsyncActionQueue作为参数传递给QueuedBatch的构造函数。这并不要求Spring知道有关QueuedBatch的任何信息,但强制在创建QueuedBatch实例时提供依赖关系。

  2. 使用@Component注释QueuedBatch类。并确保在初始化spring上下文时,包含QueuedBatch的包包含在组件扫描中。通过这种方式,它成为一个Spring托管bean,允许AsyncActionQueue自动装入其中。您可以根据您的要求更改QueuedBatch组件的范围。