spring-boot - 考虑为 jpa 存储库定义一个 bean

标签 spring-boot spring-data-jpa javabeans

我的项目结构如下:

java/com.company.foo/container/configuration/

该文件夹包含

@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/container/

并具有以下注释:

@Import({ApplicationContextConfiguration.class})
@SpringBootApplication

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

java/com.company.foo/module/user/dao/

该文件夹包含:

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

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

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

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

最佳答案

组件扫描不会拾取 JPA 存储库,因为它们只是接口(interface),只要您在配置中包含了 @EnableJpaRepositories 注释,Spring Data 就会将具体类动态创建为 bean:

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

关于spring-boot - 考虑为 jpa 存储库定义一个 bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48542606/

相关文章:

java - JUnit ClassRule 在 Spring Boot 应用程序关闭之前执行代码

java - 如何在 hibernate/jpa 实体中使用 "size"作为字段名?

mysql - jdbc4.MySQLSyntaxErrorException : Unknown database

java - PostMapping 问题 - GetMapping 方法 - 链接中循环。 SpringBoot

java - 使用 JPA 事务处理 Spring 批处理错误

jsf - 使用 JSF h :outputText and Managed Beans 时尝试添加新行字符

java - 相同的数据应用于相同类型的所有 Bean,同时创建具有不同数据的 Bean 列表

xml - 最好的 JDBC 数据源 bean 类

java - 使用 Jackson 进行自定义反序列化 : extend default deserializer

java - SpringBoot : How to make generic class that is not tightly coupled to the framework?