Разница между bindAsContract и bind в HK2 - PullRequest
0 голосов
/ 22 мая 2019

Я работаю над реализацией внедрения зависимостей в конструктор J2EE-проекта. Я использую HK2. Я создаю класс

class MyServiceImpl implements MyService{
  @Inject
  public MyServiceImpl(String test){
   // do something
  }
}

Теперь мой вопрос: когда я регистрирую эту инъекцию зависимостей в классе зависимостей, расширяя AbstractBinder, в чем разница между связыванием зависимости как простого «связывания» с «bindAsContract»?

1 Ответ

1 голос
/ 23 мая 2019

Когда вы используете

bind(ServiceImpl.class).to(IService.class)

ServiceImpl - это класс реализации, а IService - это контракт , который вы объявляете как тип впрыска. Таким образом, вы будете использовать

@Inject
private IService service;

С

bindAsContract(ServiceImpl.class)

вы говорите, что ServiceImpl является одновременно и классом реализации , и контрактом для рекламы в качестве. Так что вам нужно будет ввести его как таковой.

@Inject
private ServiceImpl service;
...