首页 > 解决方案 > 在手动创建的实例中注入组件

问题描述

假设我有这样的事情:

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

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

如果我手动创建 B 的实例,有没有办法将 A 注入 B?如果没有,是仅使用服务注册表的唯一替代方法还是有首选模式?

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

标签: javaosgideclarative-services

解决方案


显然你可以做 new B().injectA(new A())。但是,如果您想手动注入由 SCR 创建的 A 实例,则需要从服务注册表中获取该 A 实例,这是 SCR 使其可用的地方。


推荐阅读