Я пытаюсь понять, почему я не могу автоматически подключить репозиторий классов, но могу автоматически подключить репозиторий интерфейса в том же пакете для того же теста. Когда я запускаю приложение, тот же репозиторий работает должным образом.
Во-первых, ошибка:
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.app.person.repository.PersonRepository' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
at org.springframework.beans.factory.support.DefaultPersonbleBeanFactory.raiseNoMatchingBeanFound(DefaultPersonbleBeanFactory.java:1493)
at org.springframework.beans.factory.support.DefaultPersonbleBeanFactory.doResolveDependency(DefaultPersonbleBeanFactory.java:1104)
at org.springframework.beans.factory.support.DefaultPersonbleBeanFactory.resolveDependency(DefaultPersonbleBeanFactory.java:1066)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:585)
... 28 more
У меня есть очень простой пример. Тест:
@RunWith(SpringRunner.class)
@DataJpaTest
public class PersonRepositoryTest {
@Autowired
private PersonRepository personRepository; // fail...
@Autowired
private PersonCrudRepository personCrudRepository; // works!
@Test
public void findOne() {
}
}
Класс репозитория:
@Repository
public class PersonRepository {
//code
}
Интерфейс репозитория:
@Repository
public interface PersonCrudRepository extends CrudRepository<Person, Long> {
}
После неудачного опыта с той же ошибкой я пытаюсь найти некоторые детали в моей конфигурации или проверить, за что Эта проблема. Другая возможность - @DataJpaTest
не поддерживает репозитории классов.