Имитация логики репозитория с помощью автоматической передачи компонента от интерфейса, расширяющего другой интерфейс - PullRequest
0 голосов
/ 05 марта 2019

Я хочу смоделировать логику JpaRepositry, автоматически связывая компонент с другим интерфейсом, который расширяет интерфейс, реализуемый компонентом

design describing what i did

первый интерфейс:

public interface Test {
 String getBlaBla();
 String getWhatever();
  }

боб:

    @Component
    public class TestImplementation implements Test {
    @Override
    public String getBlaBla() {
        return "BLA BLA";
    }

    @Override
    public String getWhatever() {
        return "WHATEVER";
    }
}

второй интерфейс:

public interface TestTwo extends Test {
}

но у меня возникла проблема Автопроводка Бин из TestTwo Интерфейс:

    @Autowired
    private TestTwo test;

У меня была проблема Не удалось выполнить автоматическое подключение. Не найдено бобов типа «TestTwo»

Я пытался добавить @ NoRepositoryBean через интерфейс TestTwo , но у меня продолжалось то же самое

1 Ответ

0 голосов
/ 05 марта 2019

Я пытался добавить @NoRepositoryBean через интерфейс TestTwo, но я продолжал иметь то же самое

TestTwo не является интерфейсом репозитория Spring, поэтому Spring игнорирует этот момент.

Javadoc @NoRepositoryBean действительно утверждает:

Аннотация, чтобы исключить использование интерфейсов хранилища и следовательно, в результате получается создаваемый экземпляр.

Я никогда не буду работать с вашими собственными интерфейсами из коробки.
Интерфейсы, расширяющие JpaRepository, обрабатываются Spring, когда контейнер начинает предоставлять им реализацию.
JpaRepository - это специальный интерфейс, обрабатываемый Spring.
В вашем случае Spring не обрабатывает интерфейс TestTwo таким же образом.

Чтобы достичь такой цели или хотя бы приблизиться к ней, вы должны заинтересоваться CGLIB или AOP с помощью Spring.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...