Spring启动存储库未注册为有效bean
Spring boot似乎不想将我的存储库注册为有效的bean:(下面是我看到的错误:Spring启动存储库未注册为有效bean,spring,spring-boot,spring-data-jpa,spring-data,Spring,Spring Boot,Spring Data Jpa,Spring Data,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 can
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> {}
package com.frustrated.stats;
@Entity
public class StatsEvent { ... }
@SpringBootApplication
@ComponentScan(basePackages = { "com.frustrated" })
@EnableAutoConfiguration(exclude = { DataSourceAutoConfiguration.class, HibernateJpaAutoConfiguration.class })
@EnableSpringDataWebSupport
public class Application extends SpringBootServletInitializer {
Application.java:
package com.frustrated.stats;
@Repository
public interface MyRepository extends JpaRepository<StatsEvent, Long> {}
package com.frustrated.stats;
@Entity
public class StatsEvent { ... }
@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
尝试调试
在尝试了许多不同的注释之后,我认为简单地逐步完成注册过程可能会更有成效。我已经跟踪了代码,但似乎失败了:
正是元数据.hasAnnotatedMethods(Lookup.class.getName())
错误,并导致我的存储库没有被实例化
还需要注意的是,myStatEvent
也会被忽略,因为:
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]
如果您有任何帮助,我们将不胜感激。请尝试将此添加到您的应用程序上。类
@EnableJpaRepositories(basePackages = "com.frustrated.stats.MyRepository")
@ComponentScan("com.frustrated.stats.service") // if you have it
@EntityScan("com.frustrated.stats.entity") // of your entities
尝试将其添加到Application.class的顶部
@EnableJpaRepositories(basePackages = "com.frustrated.stats.MyRepository")
@ComponentScan("com.frustrated.stats.service") // if you have it
@EntityScan("com.frustrated.stats.entity") // of your entities
根据MyRepository扩展JPA存储库判断,您正在尝试使用Spring数据JPA,但您的已排除Hibernate和数据源的自动配置。除非您有一些Hibernate的手动配置或其他JPA提供程序,您还没有显示,否则对
JPA存储库的支持将被禁用,因为它需要JPA提供程序和数据源。根据MyRepository扩展JPA存储库判断,您正在尝试使用Spring data JPA,但您的应用程序已排除Hibernate和数据源的自动配置。除非您有一些Hibernate的手动配置或其他JPA提供程序没有显示,JPA存储库的支持。
将被禁用,因为它需要一个JPA提供程序和一个数据源。@EnableJpaRepositories。根据MyRepository
extensingJpaRepository
,您正在尝试使用Spring数据JPA,但您已经排除了Hibernate的自动配置。您是否有一些Hibernate的手动配置或其他需要的JPA提供程序你还没有表现出来吗?@AndyWilkinson你(对我来说)很尴尬正确。想让您的评论成为我可以接受的答案吗?删除DataSource和JPA的排除项。@EnableJpaRepositories。根据MyRepository
extendingJpaRepository
判断,您正在尝试使用Spring Data JPA,但您已经排除了Hibernate的自动配置。您有一些手动配置吗为Hibernate或其他您没有展示的JPA提供商打开?@AndyWilkinson您(对我来说)很尴尬正确。想让您的评论成为我可以接受的答案吗?删除DataSource的排除项,JPA做到了。我认为@EntityScan
和@ComponentScan
对于当前的注释和结构应该是不必要的,@EnableJpaRepositories
似乎也没有帮助。但这些也是我认为的所有事情可能是原因!我认为@AndyWilkinson在他的评论中得到了它,但我认为@EntityScan
和@ComponentScan
对于当前的注释和结构应该是不必要的,@enablejpareposities
似乎也没有帮助。但这些也是我认为可能是原因的所有事情!我认为@AndyWilk然而,英森在他的评论中得到了这一点