Я имел этот класс следующим образом, который работает отличноКак Inject реализации в Guice 4.0
@Singleton
public class EmpResource {
private EmpService empService;
@Inject
public EmpResource(EmpService empService) {
this.empService=empService;
}
}
public class EmpService {
public void getName(){..}
}
Теперь вместо того, чтобы использовать EmpService непосредственно, мне пришлось создать интерфейс и EmpService реализовать этот интерфейс следующим образом.
public interface IEmpService{
void getName();
}
public class EmpServiceImpl implements IEmpService {
public void getName(){...}
}
Итак, теперь мой класс ресурсов должен использовать интерфейс, но я не уверен, как ссылаться на реализацию, которую он должен использовать.
@Singleton
public class EmpResource {
private IEmpService empService;
@Inject
public EmpResource(IEmpService empService) {
this.empService=empService;
}
}
Я видел this, и я не был уверен, где мой привязки должны идти. (Это мой первый проект, связанный с Guice, поэтому я полный новичок).
Это ошибка, которая возникла «Никакой реализации для com.api.EmpService не было связано»., который совершенно понятен, но не уверен, как его исправить. Я использую вашу помощь.
FYI: Я использую приложение Dropwizard.
У вас есть реализацию интерфейса 'com.google. inject.Module' где-то в вашем проекте (может быть подклассом 'com.google.inject.AbstractModule')? Это место, где можно положить свои привязки. –
Да. Существует один, который расширяет модуль. Фактически я смотрел на этот пример http://www.journaldev.com/2403/google-guice-dependency-injection-example-tutorial. Поэтому в этом случае, если я поместил bind (MessageService.class) .to (MockMessageService.class); в методе configure будет ли реализация доступна? (предполагая, что dropwizard или guice сохраняет объект в приложении) – WowBow
Да, это должно сработать. –