Использование пользовательского hk2 InjectionResolver для внедрения конфигурации приложения
Вид продолжения домой предыдущий вопрос, Я пытаюсь внедрить данные конфигурации приложения, используя стандартные аннотации JSR-330 и инфраструктуру HK2 в комплекте с джерси.
В идеале я хотел бы создать кастомInjectionResolver
дляNamed
аннотация, которая будет искать нужные значения вMap
или жеProperties
объект, который я буду заполнять из данных, прочитанных в другом месте. В моей первой попытке я создалApplication
например, как
public class MyApplication extends ResourceConfig {
...
packages(MY_PACKAGES);
property(MY_CONFIG_PROPERTY, someValue);
register(new AbstractBinder() {
@Override
protected void configure() {
bind(ConfigurationInjectionResolver.class)
.to(new TypeLiteral<InjectionResolver<Named>>(){})
.in(Singleton.class)
}
});
}
а потом мойInjectionResolver
похоже
public class ConfigurationInjectionResolver implements InjectionResolver<Named> {
@Context Application application;
@Override
public Object resolve(Injectee injectee, ServiceHandle<?> serviceHandle) {
// lookup data in application.getProperties();
}
}
Моя проблема в том чтоapplication.getProperties()
пустой. Есть идеи, что случилось? Кроме того, я мог связать экземпляр моего Инжектора вместо того, чтобы связать класс? Таким образом, я мог бы построить экземпляр, передавая мойMap
данные в качестве параметра.