为什么@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 容器中。
我有一个 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 容器中。