考虑为jpa存储库定义bean

时间:2018-01-31 12:48:17

标签: spring-boot spring-data-jpa javabeans

我的项目结构如下:

的java / com.company.foo /容器/配置/

此文件夹包含

@ComponentScan({"com.company.foo.module.project",
        "com.company.foo.module.user"})
@Configuration
@EnableScheduling
@Import(value = {
        SecurityConfiguration.class})
public class ApplicationContextConfiguration {
}

我的ResourcePlannerApplication位于此文件夹中:

的java / com.company.foo /容器/

并有以下注释:

@Import({ApplicationContextConfiguration.class})
@SpringBootApplication

现在我有两个模块项目和用户具有相同的结构:

的java / com.company.foo /模块/用户/刀/

此文件夹包含:

public interface UserRepository extends JpaRepository<UserEntity, Long> {
    UserEntity findByUsername(String username);
}

现在,当我启动应用程序时,它告诉我:

考虑在配置中定义'com.company.foo.module.user.dao.UserRepository'类型的bean。

我没有看到问题,因为ComponentScan正在扫描所有文件夹?

2 个答案:

答案 0 :(得分:2)

组件扫描不会获取JPA存储库,因为它们只是具体类由Spring Data动态创建的接口,前提是您已在配置中包含@EnableJpaRepositories注释:

overflow:hidden

答案 1 :(得分:0)

Plog的答案是正确的。 我只想补充一点,类似的解决方案也适用于Mongo信息库(我们具有作为信息库的接口)。 假设存储库软件包为:

package com.example.respository;

在spring应用程序代码中启用mongo存储库,如下所示:

@EnableMongoRepositories("com.example.repsoitory")