以下是 Spring Boot 3.x 集成 MongoDB 的 默認配置項及默認值,以及 常用需要修改的配置項 的詳細說明:
一、默認配置項及默認值
Spring Boot 對 MongoDB 的默認配置基于 spring.data.mongodb
前綴,以下是核心配置項:
配置項 | 默認值 | 描述 |
---|---|---|
spring.data.mongodb.database | test | 默認連接的數據庫名。 |
spring.data.mongodb.host | localhost | MongoDB 服務器地址。 |
spring.data.mongodb.port | 27017 | MongoDB 默認端口。 |
spring.data.mongodb.username | 空 | 連接認證的用戶名(需啟用認證時配置)。 |
spring.data.mongodb.password | 空 | 連接認證的密碼(需啟用認證時配置)。 |
spring.data.mongodb.authentication-database | admin | 認證使用的數據庫(如需指定認證數據庫)。 |
spring.data.mongodb.uri | 空 | MongoDB 連接字符串(優先級高于單獨配置的 host/port 等)。 |
spring.data.mongodb.repositories.enabled | true | 是否啟用 MongoDB 倉庫(Repository)支持。 |
spring.data.mongodb.auto-index-creation | true | 是否自動創建索引(基于 @Indexed 注解)。 |
二、常用需要修改的配置項及說明
以下配置項根據實際場景需要調整:
1. 連接基礎配置
# MongoDB 連接字符串(推薦使用,簡化配置)
spring.data.mongodb.uri=mongodb://localhost:27017/mydb# 或單獨配置(適用于簡單場景)
spring.data.mongodb.host=localhost
spring.data.mongodb.port=27017
spring.data.mongodb.database=mydb
2. 認證配置
# 啟用認證(需 MongoDB 服務已配置用戶名/密碼)
spring.data.mongodb.username=admin
spring.data.mongodb.password=admin123
spring.data.mongodb.authentication-database=admin # 認證數據庫(默認 admin)
3. 連接池配置
# 連接池最大連接數(默認 100)
spring.data.mongodb.max-connections-per-host=100# 連接超時時間(毫秒,默認 10000ms)
spring.data.mongodb.connect-timeout=10000# 讀取超時時間(毫秒,默認 10000ms)
spring.data.mongodb.socket-timeout=10000
4. 高級連接配置
# 啟用 SSL(需 MongoDB 服務支持 SSL)
spring.data.mongodb.ssl-enabled=true# 忽略 SSL 主機名驗證(測試環境可用)
spring.data.mongodb.ssl-invalid-host-name-allowed=true# 副本集名稱(若使用副本集)
spring.data.mongodb.replica-set=my-replica-set# 分片集群配置(若使用分片)
spring.data.mongodb.sharded=true
5. 寫操作配置
# 寫操作確認級別(默認 `ACKNOWLEDGED`)
spring.data.mongodb.write-concern=MAJORITY # 確保寫入到多數節點# 讀操作模式(默認 `PRIMARY`)
spring.data.mongodb.read-concern=MAJORITY
spring.data.mongodb.read-preference=primary
6. 其他優化配置
# 自動創建索引(根據 @Indexed 注解)
spring.data.mongodb.auto-index-creation=true# 關閉自動索引創建(避免重復索引)
spring.data.mongodb.auto-index-creation=false
三、配置示例
場景 1:本地 MongoDB(無認證)
spring.data.mongodb.uri=mongodb://localhost:27017/myapp
場景 2:遠程 MongoDB(帶認證)
spring.data.mongodb.uri=mongodb://user:pass@remote-host:27017/mydb?authSource=admin
場景 3:副本集配置
spring.data.mongodb.uri=mongodb://host1:27017,host2:27017,host3:27017/mydb?replicaSet=my-replica-set
場景 4:SSL 連接
spring.data.mongodb.uri=mongodb://user:pass@host:27017/mydb?ssl=true&sslInvalidHostNameAllowed=true
四、注意事項
-
優先級規則
spring.data.mongodb.uri
的優先級高于單獨配置的host
/port
等參數。- 若同時配置
uri
和其他參數,其他參數會被忽略。
-
連接池優化
- 根據應用負載調整
max-connections-per-host
(通常 100 足夠,高并發場景可適當增加)。 - 避免設置過小的連接超時(
connect-timeout
)導致頻繁斷開。
- 根據應用負載調整
-
安全配置
- 生產環境必須啟用認證和 SSL。
- 避免使用
sslInvalidHostNameAllowed
在生產環境(可能有安全風險)。
-
索引管理
- 開發階段可啟用
auto-index-creation
,生產環境建議手動創建索引以避免重復。
- 開發階段可啟用
五、完整配置參考
# 基礎配置
spring.data.mongodb.uri=mongodb://user:pass@host:27017/mydb?authSource=admin&replicaSet=my-replica-set&ssl=true# 連接池
spring.data.mongodb.max-connections-per-host=200
spring.data.mongodb.min-connections-per-host=4# 超時配置
spring.data.mongodb.connect-timeout=5000
spring.data.mongodb.socket-timeout=30000# 認證與安全
spring.data.mongodb.ssl-enabled=true
spring.data.mongodb.ssl-invalid-host-name-allowed=false# 寫操作
spring.data.mongodb.write-concern=MAJORITY# 索引
spring.data.mongodb.auto-index-creation=true
通過以上配置,可以靈活適配不同場景的 MongoDB 集成需求。