为什么@PetiteInject无法在DecoraManager中注入服务?

时间:2018-11-09 19:55:04

标签: jodd

我有一个DecoraManager实现:AppDecoraManager,并且想要注入服务,例如:FooService as:

@PetiteInject
FooService fooService;

当调用resolveDecorator()时,我想使用fooService来确定一些参数,但是它具有空值。

这可能是什么原因,我该如何解决?

1 个答案:

答案 0 :(得分:1)

DecoraManager是由servlet容器在DecoraServletFilter中创建的。

目前,没有与现有的Petite IOC集成,因此您必须执行以下操作:

  • 首先,您需要对PetiteContainer有一个公共静态引用。例如,在创建容器期间将其存储。
  • 在实现中覆盖createDecoraManager()
  • PetiteContainer.wire(this)的实现中使用DecoraManager

到目前为止,这是唯一的方法。

替代方法是:

  • DecoraManager注册为@PetiteBean
  • 再次,获取对PetiteContainer的静态引用
  • createDecoraManager中使用PetiteContainer.get()获取实例。

在第一个示例中,DecoraManager仅被连接;在第二个示例中,它也存储在Petite容器中。