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

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 实例。