Как раз сейчас, чтобы ввести объект типа Foo в Bar, я делаю следующее.Нужно ли использовать фабрику, чтобы ввести простой объект в Джерси?
Класс, который будет введен в:
class Bar {
@Inject
Foo field;
public Foo getField() { return field; }
}
код, реализующий Factory:
public class Foo implements Factory<Foo> {
@Override
public Foo provide() {
return new Foo();
}
@Override
public void dispose(Foo f) {
}
}
код в основной конфигурации:
final ResourceConfig rc = new ResourceConfig()
.packages("com.example")
.register(
new AbstractBinder() {
@Override
protected void configure() {
bindFactory(new FooFactory()).to(Foo.class).in(Singleton.class);
}
})
Мой вопрос ... В Джерси 2.0, который использует hk2 для инъекции зависимостей, все равно нужно вводить объект без создания фабричного класса?
Что делать, если класс имел конструктор с параметрами? Все ли эти параметры нуждаются в @Inject? – oibe
невозможно, вы можете использовать @Inject только в полях или привязать экземпляр таким образом: bind (new Bar («test»)). To (Bar.class); –
в целом, для более сложных требований к впрыску (например, с помощью вспомогательной инъекции) вам необходимо использовать InjectionResolver или Factory. –