在手动创建的实例中注入组件

时间:2019-01-10 08:10:55

标签: java osgi declarative-services

假设我有这样的东西:

@Component(immediate = true)
public class A {}

public class B {
    @Reference
    public void injectA(A a) {...}
}

如果我手动创建B的实例,是否可以将A注入B? 如果不是,是使用服务注册表的唯一替代方法,还是有一种进入模式?

更新: 我无法手动注入A的实例(不使用服务注册表),因为创建B实例的代码没有它。

1 个答案:

答案 0 :(得分:1)

很显然,您可以执行new B()。injectA(new A())。但是,如果要手动注入SCR创建的A实例,则需要从SCR使其可用的服务注册表中获取该A实例。