vertx-jerseyを使用して、私自身のカスタムサービスだけでなく、vertx
などの標準的なオブジェクトを挿入できるWebサービスを作成しようとしています。インスタンス自体。私は(すなわちthis example以下)のようなWebサーバを初期化しています現時点ではVertx + Jersey + HK2:@Contractと@Serviceを使用したServiceLocatorの自動バインド
:
Vertx vertx = Vertx.vertx();
vertx.runOnContext(aVoid -> {
JsonObject jerseyConfiguration = new JsonObject();
// ... populate the config with base path, resources, host, port, features, etc.
vertx.getOrCreateContext().config().put("jersey", jerseyConfiguration);
ServiceLocator locator = ServiceLocatorUtilities.bind(new HK2JerseyBinder());
JerseyServer server = locator.getService(JerseyServer.class);
server.start();
});
私がいる問題は、私はまた、私は依存性注入を利用することができるようにしたいということです自動的に私の他のサービスをアップ@Contract
と@Service
HK2
注釈を使用することができます。
問題は、私はすでに、私は明示的にHK2JerseyBinder
を結合して、私はそれを理解するように私が唯一のすべてがバウンド/アクセス可能であるべきで、単一ServiceLocator
インスタンスを作成すべきServiceLocatorUtilities
を使用してServiceLocator
を作成していますということです。
は、私は、しかし、それは彼らが注釈されていないとして、その後逃したことになるHK2JerseyBinder
にバインドされ、他のすべてと一緒にJerseyServer
のように見え、また、私が代わりにServiceLocatorUtilities.createAndPopulateServiceLocator()
を呼び出すことができることを知っています。
私は両方を行うことができますか、この方法を回避する方法はありますか? jwelllさんのコメントに拡大すること
すべてのServiceLocatorには、DynamicConfigurationService(https://javaee.github.io/hk2/apidocs/org/glassfish/hk2/api/DynamicConfigurationService.html)がバインドされています。これからPopulator(https://javaee.github.io/hk2/apidocs/org/glassfish/hk2/api/Populator.html)を入手することができます。ポピュレータには、(例えば)住人のファイルから、またはクラススキャンから、またはサービスを発見するために使用する他の自動メカニズムからサービスを動的に追加するために使用できるメソッドがあります。 – jwells131313