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

Why @PetiteInject cannot inject service in DecoraManager?

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

@PetiteInject
FooService fooService;

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

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

DecoraManager是由servlet容器创建的,在DecoraServletFilter.

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

  • 首先,您需要 public 对 PetiteContainer 的静态引用。例如,在创建容器时存储它。
  • 在您的实现中覆盖 createDecoraManager()
  • DecoraManager 的实现中使用 PetiteContainer.wire(this)

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

替代方案是:

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

在第一个示例中,DecoraManager 只是连线;在第二个示例中,它也存储在 Petite 容器中。