#java #spring #spring-data-jpa
#java #spring #spring-data-jpa
Вопрос:
Я хочу имитировать логику JpaRepositry путем автоматического подключения компонента из другого интерфейса, который расширяет интерфейс, реализуемый компонентом
первый интерфейс :
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. вы используете intelj?
Ответ №1:
Я пытался добавить @NoRepositoryBean поверх интерфейса TestTwo, но у меня продолжалось то же самое
TestTwo
не является интерфейсом репозитория Spring, поэтому Spring игнорирует этот момент.
@NoRepositoryBean
javadoc действительно заявляет :
Аннотация, исключающая использование интерфейсов репозитория и, следовательно, получение создаваемого экземпляра.
Я никогда не буду работать с вашими собственными интерфейсами «из коробки».
Интерфейсы, которые расширяются JpaRepository
, обрабатываются Spring, когда контейнер начинает предоставлять им реализацию.
JpaRepository
это специальный интерфейс, обрабатываемый Spring.
В вашем случае Spring не обрабатывает TestTwo
интерфейс таким же образом.
Чтобы достичь такой цели или, по крайней мере, закрыть вещи, которые вас должны заинтересовать CGLIB или AOP с помощью Spring.