SpringBoot无法连接MongoDB服务器,抛出Socket连接错误求助
SpringBoot + MongoDB 启动报错连接拒绝且API返回404排查方案
问题现象
开发基于SpringBoot的MongoDB应用,pom依赖配置正确,但启动时抛出Mongo连接错误:
com.mongodb.MongoSocketOpenException: Exception opening socket at com.mongodb.internal.connection.SocketStream.open(SocketStream.java:70) ~[mongodb-driver-core-4.6.1.jar:na] at com.mongodb.internal.connection.InternalStreamConnection.open(InternalStreamConnection.java:180) ~[mongodb-driver-core-4.6.1.jar:na] at com.mongodb.internal.connection.DefaultServerMonitor$ServerMonitorRunnable.lookupServerDescription(DefaultServerMonitor.java:193) ~[mongodb-driver-core-4.6.1.jar:na] at com.mongodb.internal.connection.DefaultServerMonitor$ServerMonitorRunnable.run(DefaultServerMonitor.java:157) ~[mongodb-driver-core-4.6.1.jar:na] at java.base/java.lang.Thread.run(Thread.java:1589) ~[na:na] Caused by: java.net.ConnectException: Connection refused at java.base/sun.nio.ch.Net.pollConnect(Native Method) ~[na:na] at java.base/sun.nio.ch.Net.pollConnectNow(Net.java:672) ~[na:na] at java.base/sun.nio.ch.NioSocketImpl.timedFinishConnect(NioSocketImpl.java:535) ~[na:na] at java.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:585) ~[na:na] at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:327) ~[na:na] at java.base/java.net.Socket.connect(Socket.java:666) ~[na:na] at com.mongodb.internal.connection.SocketStreamHelper.initialize(SocketStreamHelper.java:107) ~[mongodb-driver-core-4.6.1.jar:na] at com.mongodb.internal.connection.SocketStream.initializeSocket(SocketStream.java:79) ~[mongodb-driver-core-4.6.1.jar:na] at com.mongodb.internal.connection.SocketStream.open(SocketStream.java:65) ~[mongodb-driver-core-4.6.1.jar:na] ... 4 common frames omitted
程序虽能启动,但Postman/Talend调用API时返回404 Not Found。同款代码同事可正常运行,已尝试修改SpringBoot版本、重写代码、更换端口等操作,问题未解决。
排查步骤
针对MongoDB连接拒绝问题
- 确认本地MongoDB服务状态:
Windows:打开服务列表,找到MongoDB服务,确认状态为运行中;
Linux/Mac:执行systemctl status mongod(Linux)或brew services list(Mac),检查Mongo服务是否启动。 - 核对连接配置:
检查application.properties或application.yaml中的MongoDB配置,确认spring.data.mongodb.host、spring.data.mongodb.port与本地Mongo监听地址一致,默认端口为27017;若使用URI连接,确认spring.data.mongodb.uri格式正确(如mongodb://localhost:27017/your-database)。 - 检查端口拦截:
临时关闭本地防火墙、杀毒软件,确认是否是安全软件拦截了27017端口的连接。 - 核对MongoDB版本兼容性:
确认本地MongoDB版本与同事一致,部分高版本Mongo(如6.x)可能需要调整连接配置(如启用SCRAM-SHA-256认证)。
针对API 404问题
- 检查Controller包扫描:
确认SpringBoot启动类所在包是所有Controller的父包,若Controller在子包外,需在启动类添加@ComponentScan(basePackages = {"xxx.xxx.controller"})指定扫描路径。 - 验证Controller注解:
确认API类添加了@RestController(或@Controller+@ResponseBody),方法上的@GetMapping/@PostMapping等请求路径拼写正确,无大小写或路径错误。 - 核对请求端口:
确认Postman/Talend请求的端口与application.properties中server.port配置一致,避免改了端口但请求仍用旧端口。 - 查看启动日志:
启动时检查日志,是否存在Mapping GET /api/xxx to public ...类的映射日志,若缺失说明Controller未被Spring容器加载。
本地环境差异排查
- 核对JDK版本:SpringBoot 3.x需JDK 17,2.7.x支持JDK 8/11,确认本地JDK版本与同事匹配。
- 清理项目缓存:执行
mvn clean install(Maven)或gradle clean build(Gradle),清理依赖缓存后重新编译。 - 检查IDE运行配置:确认IDEA/Eclipse的运行配置未添加额外VM参数或环境变量,覆盖了application中的配置项。
内容的提问来源于stack exchange,提问作者HOME WORK AND EXERCISES
相关产品推荐
相关产品推荐

