1 つのバンドルには、クラス ServiceImpl によって実装されるインターフェイス IService があります。
public interface IService
{
void doSomething();
}
@Component
@Provides
@Instantiate
public class ServiceImpl implements IService
{
public void doSomething()
{
}
}
2 番目のバンドルには、別のクラス ServiceConsumer (GoGo シェル コマンド。特定の注釈は含まれていません) があり、最初のバンドルで提供されるサービスを使用します。
@Component
@Provides
@Instantiate
public class ServiceConsumer
{
@Requires
private IService service;
public doIt()
{
service.doSomething();
}
}
Felix で 2 つのバンドルをインポートして開始すると、すべてのサービスが ipojo:instances を使用して正しくインスタンス化され、ServiceImpl が IService を提供することがわかります。ただし、doIt() が実行されると、サービスは null になります。
IService が利用可能であるように見えるので、@Requires が適切なインスタンスを注入することを期待しますが、そうではないようです。
私がしていないことが非常に明白な何かがあると感じていますが、何をしているのかわかりません。