我有一个本来是非常通用的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添加到托管上下文中。
答案 0 :(得分:2)
正如评论所示,你有2种方法来处理这个
将AsyncActionQueue作为参数传递给QueuedBatch的构造函数。这并不要求Spring知道有关QueuedBatch的任何信息,但强制在创建QueuedBatch实例时提供依赖关系。
使用@Component注释QueuedBatch类。并确保在初始化spring上下文时,包含QueuedBatch的包包含在组件扫描中。通过这种方式,它成为一个Spring托管bean,允许AsyncActionQueue自动装入其中。您可以根据您的要求更改QueuedBatch组件的范围。