在手动创建的实例中注入组件
Injecting components in manually created instances
假设我有这样的东西:
@Component(immediate = true)
public class A {}
public class B {
@Reference
public void injectA(A a) {...}
}
如果我手动创建B的实例,有没有办法让A注入B?
如果没有,是仅使用服务注册表的唯一替代方法还是有一个首选模式?
更新:
我无法手动注入 A 的实例(不使用服务注册表),因为创建 B 实例的代码没有它。
显然你可以做 new B().injectA(new A())。但是如果你想手动注入 SCR 创建的 A 实例,你需要从 SCR 提供它的服务注册表中获取 A 实例。
假设我有这样的东西:
@Component(immediate = true)
public class A {}
public class B {
@Reference
public void injectA(A a) {...}
}
如果我手动创建B的实例,有没有办法让A注入B? 如果没有,是仅使用服务注册表的唯一替代方法还是有一个首选模式?
更新: 我无法手动注入 A 的实例(不使用服务注册表),因为创建 B 实例的代码没有它。
显然你可以做 new B().injectA(new A())。但是如果你想手动注入 SCR 创建的 A 实例,你需要从 SCR 提供它的服务注册表中获取 A 实例。