Я пытаюсь понять, как развивается разработка 2-го и контекстно-зависимого инъекций.Jersy2 injection slf4j Logger
Я не понимаю, как вводить в ресурс объект, которому требуются параметры инициализации в конструкторе. Например: Я хочу, чтобы @Inject slf4j Logger, построенный с использованием LoggerFactory.
Мой класс ресурс:
@Path("/myresource")
public class MyResource {
@Inject
private Logger log;
@GET
@Produces(MediaType.APPLICATION_JSON)
public Answer status() {
log.info("STATUS");
return new Answer(200, "Server up and running @ "+ ZonedDateTime.now());
}
}
Мой конфиг Ресурс:
public class MyAppextends ResourceConfig {
public MyApp() {
register(new MyBinder());
packages(true, "my.packages");
}
}
public class MyBinder extends AbstractBinder {
@Override
protected void configure() {
bindFactory(MyLoggerFactory.class).to(org.slf4j.Logger.class);
}
}
Наконец, фабрика:
public class MyLoggerFactory implements Factory<Logger> {
@Override
public Logger provide() {
return LoggerFactory.getLogger(TYPE_FOR_LOGGING.class);
}
@Override
public void dispose(Logger logger) {
}
}
Как я могу указать TYPE_FOR_LOGGING в качестве аргумента, в чтобы ввести правильно инициализированный Logger в каждый ресурс, который я хочу?
Благодаря
Спасибо, это именно то, что мне нужно. Не могли бы вы указать некоторую документацию HK2, отличную от JavaDoc? – besil
Единственная другая документация, которую я могу найти о InstantiationService, находится на фабрике javadoc. Вероятно, это должно быть исправлено, вероятно, потребуется немного больше объяснений, чем то, что содержится в текущей документации – jwells131313