Я пытаюсь использовать vertx-jersey для создания веб-сервиса, в котором я может внедрить свои собственные пользовательские службы, а также некоторые более стандартные объекты, такие как сам экземпляр vertx
.
На данный момент я инициализирую веб-сервер так (т.е. следуя этот пример):
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
.
Проблема в том, что я уже создаю ServiceLocator
, используя ServiceLocatorUtilities
, в котором я явно привязываю HK2JerseyBinder
, и, насколько я понимаю, я должен создавать только один экземпляр ServiceLocator
, в котором все должно быть доступно/привязано.
Я также знаю, что вместо этого я мог бы вызвать ServiceLocatorUtilities.createAndPopulateServiceLocator()
, однако похоже, что JerseyServer
вместе со всем остальным, связанным с HK2JerseyBinder
, будет пропущено, поскольку они не аннотированы.
Есть ли способ, которым я могу сделать и то, и другое или как-то обойти это?