Внедрение зависимости от игрового фреймворка не работает - PullRequest
2 голосов
/ 16 апреля 2019

Я попробовал пример внедрения зависимостей отсюда https://dzone.com/articles/guicing-play-framework

Ниже мой код Контроллер:

public class TestController extends Controller{
  @Inject
  private Testing test;

  public Result result() {
    test.tt();
    return ok();
  } 
}

Код интерфейса службы:

public interface Testing {
  public String tt();
}

Код ServiceImpl:

public class Testingimpl implements Testing{
  @Override
  public String tt() {
    return "test";
  }
}

Я получаю эту ошибку

CreationException: Невозможно создать инжектор

Если я это сделаю, это сработает.

public class TestController extends Controller{
  @Inject
  private TestingImpl test;

  public Result result() {
    test.tt();
    return ok();
  } 
}

Как решить эту проблему?

1 Ответ

1 голос
/ 17 апреля 2019

Вы забыли привязать интерфейс к вашей реализации.Если у вас есть одна реализация, измените ваш интерфейс следующим образом:

import com.google.inject.ImplementedBy;

@ImplementedBy(Testingimpl.class)
public interface Testing {
    public String tt();
}

Для более сложного решения вы можете использовать программные привязки: https://www.playframework.com/documentation/2.7.x/JavaDependencyInjection#Programmatic-bindings

...