Spring-boot, похоже, не хочет регистрировать мой репозиторий как действительный bean-компонент :( Вот ошибка, которую я вижу:
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.frustrated.stats.MyRepository' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}
Основная причина, по-видимому:
o.s.c.a.ClassPathBeanDefinitionScanner : Ignored because not a concrete top-level class: file [/Users/me/Code/my_app/my_service/build/classes/java/main/com/frustrated/stats/MyRepository.class]
Я где-то неправильно настроил свое приложение?
Вот мои файлы:
MyRepository.java :
package com.frustrated.stats;
@Repository
public interface MyRepository extends JpaRepository<StatsEvent, Long> {}
StatsEvent.java :
package com.frustrated.stats;
@Entity
public class StatsEvent { ... }
Application.java :
@SpringBootApplication
@ComponentScan(basePackages = { "com.frustrated" })
@EnableAutoConfiguration(exclude = { DataSourceAutoConfiguration.class, HibernateJpaAutoConfiguration.class })
@EnableSpringDataWebSupport
public class Application extends SpringBootServletInitializer {
Вот моя структура пакета:
com:
frustrated:
- Application.java
stats:
- MyRepository.java
- StatsEvent.java
Попытки отладки
Попробовав множество различных аннотаций, я подумал, что может быть более продуктивно просто пройти через процесс регистрации. Я проследил код, и, похоже,сбой здесь :
protected boolean isCandidateComponent(AnnotatedBeanDefinition beanDefinition) {
AnnotationMetadata metadata = beanDefinition.getMetadata();
return (metadata.isIndependent() && (metadata.isConcrete() ||
(metadata.isAbstract() && metadata.hasAnnotatedMethods(Lookup.class.getName()))));
}
Это metadata.hasAnnotatedMethods(Lookup.class.getName())
является ложным и приводит к тому, что мой репозиторий не создается как таковой.
Это также может быть примечательночто мой StatsEvent
также игнорируется, потому что:
o.s.c.a.ClassPathBeanDefinitionScanner : Ignored because not matching any filter: file [/Users/me/Code/my_app/my_service/build/classes/java/main/com/frustrated/stats/StatsEvent.class]
Любая помощь будет принята с благодарностью!