У меня есть хранилище в другом пакете, чем класс конфигурации, поэтому я пометил его как @Repostiory следующим образом:
package test;
@Repository
public interface UserTest extends JpaRepository<User, Long> {
}
Я произвел сканирование компонентов на нем, и оно не сработало:
package com.app;
@SpringBootApplication
@ComponentScan({"test","com.app"})
public class Application extends SpringBootServletInitializer {
}
Исключение: нет подходящего бина типа 'test.UserTest': ожидается как минимум 1 бин, который квалифицируется как кандидат для автопровода.
почему сканирование компонентов не работает в репозитории, если я не добавлю enableJpaRepositories? Я думал, что ComponentScan достаточно
Обновление
, так как некоторые ответы дают решение, я спрашиваю об объяснении, а не о решении. Следующее будет работать даже без проверки компонентов на «тесте»:
SpringBootApplication
@EnableJpaRepositories({"test","com.app"})
public class Application extends SpringBootServletInitializer{
}
Теперь вопрос, почему мне даже нужно использовать компонентcancan в @Repository, когда он не работает? почему в документации @Repository сканируется компонентомcan, когда он не имеет эффекта, а @EnableJpaRepostiories - enoguh?
из документации Spring по проверке компонентов:
Указывает, должно ли быть включено автоматическое определение классов, аннотированных @Component @Repository, @Service или @Controller.
@ Репозиторий в моем случае не обнаружен