Spring Boot连接MongoDB报错:创建mongoDatabaseFactory Bean失败
解决Spring Boot连接MongoDB Atlas时数据库名称为空的Bean创建错误
针对启动时抛出的org.springframework.beans.factory.BeanCreationException(创建mongoDatabaseFactory Bean失败,根源为数据库名称不能为空)问题,即便已经配置了spring.data.mongodb.database=movie-api-db,可以从以下几个方向排查解决:
1. 核对配置属性与URI的优先级
- 如果同时配置了
spring.data.mongodb.uri和单独的database属性,URI的优先级更高。检查你的URI是否正确包含了数据库名称:
正确的URI格式示例:
这里末尾的spring.data.mongodb.uri=mongodb+srv://<你的用户名>:<你的密码>@cluster0.mongodb.net/movie-api-db?retryWrites=true&w=majoritymovie-api-db就是指定的数据库名称,若URI中未包含,即使单独配置database属性也可能不生效。 - 确认
spring.data.mongodb.database的拼写完全正确,没有少写或错写字符(比如把mongodb写成mongo)。
2. 确认配置文件位置正确
- 确保
application.properties放在src/main/resources目录下,这是Spring Boot默认加载配置的路径。如果放在其他目录,需要在构建工具或启动参数中指定配置路径,否则配置不会被读取。
3. 检查自定义Mongo配置类的影响
- 若项目中有自定义的Mongo配置类(比如使用
@Configuration注解继承AbstractMongoClientConfiguration),需确认配置类中正确读取了database属性:
如果自定义配置类中硬编码了数据库名称或者没有正确注入配置值,会覆盖默认的配置读取逻辑,导致数据库名称为空。@Configuration public class CustomMongoConfig extends AbstractMongoClientConfiguration { @Value("${spring.data.mongodb.database}") private String dbName; @Override protected String getDatabaseName() { return dbName; } // 其他MongoClient相关配置... }
4. 验证依赖版本兼容性
- 确保Spring Boot与Spring Data MongoDB的版本兼容。使用Spring Boot Starter依赖时,无需手动指定版本,框架会自动匹配:
若手动指定了版本,可能出现版本不匹配导致配置读取异常的情况,建议移除手动指定的版本号,使用Starter的默认版本。<!-- Maven依赖示例 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency>
5. 清理缓存并重新构建
- IDE或构建工具的缓存可能导致配置未生效,执行以下操作清理缓存并重新构建:
- Maven项目:运行
mvn clean install - Gradle项目:运行
gradle clean build
之后重新启动应用,查看问题是否解决。
- Maven项目:运行
内容的提问来源于stack exchange,提问作者Jeevanandhan Kaliyamoorthy
相关产品推荐
相关产品推荐

