项目场景:
在用SpringDataMongoDB提示找不到Repository的Bean
尝试过的方法:
- 把构造器注入换成@autowired,换成@resource,没用
- 在SpringBootApplication主类中添加@ComponentScan,然后在里面添加参数,没用
- 添加@EnableJpaRepositories,没用
解决方案:
发现是依赖的问题,原本的依赖是
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-mongodb</artifactId>
</dependency>
后来换成了
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
成功了
问题原因(GPT生成)
spring-boot-starter-data-mongodb
和 spring-data-mongodb
这两个依赖在 Spring Boot 和 Spring Data MongoDB 的应用中扮演着不同的角色。
-
spring-boot-starter-data-mongodb:
- 这是一个 “starter” 包,专为 Spring Boot 应用设计。Spring Boot 提供了多个 starter 依赖,旨在简化依赖管理并自动配置应用。使用这个 starter 依赖,可以快速集成和启动 MongoDB 数据库的操作。
- 它包括了
spring-data-mongodb
依赖,同时还可能包括其他必要的库,例如 MongoDB 的 Java 驱动程序,以及 Spring Boot 特有的自动配置支持。 - 使用这个 starter,你将自动获得 Spring Boot 的自动配置功能,这意味着很多 MongoDB 的配置(如数据库连接)会根据 application.properties 或 application.yml 文件中的配置自动设置。
-
spring-data-mongodb:
- 这是 Spring Data MongoDB 项目的核心库,提供了访问 MongoDB 数据库的基本功能。
- 这个库支持通过 repository 抽象来操作 MongoDB,可以进行创建、查询、更新和删除操作,并支持自定义查询方法。
- 它本身不包含 Spring Boot 的特定集成或自动配置,主要关注于数据访问层的功能。
总的来说,如果你在使用 Spring Boot 开发应用,推荐使用 spring-boot-starter-data-mongodb
,因为它包含了 spring-data-mongodb
,并提供了额外的自动配置支持,使得集成更加简单。如果你不是在 Spring Boot 环境下工作,而是需要在一个已经存在的 Spring 应用中集成 MongoDB,或者需要更细粒度的控制,那么可能会直接使用 spring-data-mongodb
。