Usando um InjectionResolver hk2 personalizado para injetar a configuração do aplicativo
Uma espécie de acompanhamento deminha pergunta anterior. Estou tentando injetar dados de configuração do aplicativo usando anotações padrão JSR-330 e a estrutura HK2 fornecida com jersey.
Idealmente, eu gostaria de criar um costumeInjectionResolver
para oNamed
anotação, que procurará os valores desejados em umMap
ouProperties
objeto que preencherei dos dados lidos em outro lugar. Na minha primeira tentativa, criei umApplication
instância como
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)
}
});
}
e então meuInjectionResolver
parece
public class ConfigurationInjectionResolver implements InjectionResolver<Named> {
@Context Application application;
@Override
public Object resolve(Injectee injectee, ServiceHandle<?> serviceHandle) {
// lookup data in application.getProperties();
}
}
Meu problema é queapplication.getProperties()
está vazia. Alguma idéia do que está errado? Além disso, eu poderia vincular uma instância do meu Injector em vez de vincular a classe? Dessa forma, eu poderia construir a instância passando meuMap
dados como um parâmetro.