2016-09-20 91 views
0

我想一个数据库加载器添加到我的春天应用程序,但我发现了以下错误豆:如何创建CrudRepository接口

Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: 
No qualifying bean of type [org...GameRepository] found 
for dependency: 
expected at least 1 bean which qualifies as autowire candidate for this 
dependency. Dependency annotations: {}"}} 

我读过有关实例存储库,但我也看到了几个不需要的例子,所以我错过了什么?如果我启用@EnableJpaRepositories,我需要一些配置类吗?

//GameRepository.java 
@Repository 
public interface GameRepository extends CrudRepository<Game, Long> { 
} 
//DatabaseLoader.java 
@Component 
public class DatabaseLoader implements CommandLineRunner{ 

    private final GameRepository repository; 

    @Autowired 
    public DatabaseLoader(GameRepository repository) { 
     this.repository = repository; 
    } 

    @Override 
    public void run(String... strings) throws Exception { 
     this.repository.save(new Game("Sala 1")); 
    } 
//Application.java 
@ComponentScan 
@EnableWebMvc 
public class Application extends SpringBootServletInitializer { 

    public static void main(String[] args) { 
     SpringApplication.run(Application.class, args); 
    } 

    @Override 
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { 
     return application.sources(Application.class); 
    } 
} 
+1

是可以componentscan跳过库包?它获取参数basepackages,我认为值得去尝试 – HRgiger

+2

删除'@ EnableWebMvc'。用'@ SpringBootApplication'替换'@ ComponentScan'。重新启动应用程序。还要确保你的'Application'在一个顶层包中,以便它扫描你的所有类。否则,它可能会遗漏一些类别,并且不会对您可能需要的功能进行适当的自动检测。 –

回答

2

您需要@EnableJpaRepositories添加到您的配置

+2

或者他可以使用'@ SpringBootApplication',默认情况下它允许在classpath中加入技术。 –