fix: 彻底修复数据库重复初始化问题
问题修复: - 使用全局静态OnceLock确保数据库单例模式 - 移除AppState中的重复数据库初始化逻辑 - 确保整个应用生命周期只有一个数据库实例 验证结果: - 测试确认数据库初始化日志只出现一次 - 解决了启动时循环输出的问题 - 提升了应用启动性能 这个修复彻底解决了数据库重复初始化导致的日志循环输出问题。
This commit is contained in:
parent
849dc8317c
commit
a743bedd98
|
|
@ -62,16 +62,12 @@ impl AppState {
|
|||
|
||||
/// 获取数据库实例
|
||||
pub fn get_database(&self) -> Arc<Database> {
|
||||
// 如果数据库未初始化,先初始化
|
||||
if self.database.lock().unwrap().is_none() {
|
||||
let _ = self.initialize_database();
|
||||
}
|
||||
|
||||
// 使用静态数据库实例,避免重复初始化
|
||||
// 使用全局静态数据库实例,确保整个应用只有一个数据库实例
|
||||
use std::sync::OnceLock;
|
||||
static DATABASE_INSTANCE: OnceLock<Arc<Database>> = OnceLock::new();
|
||||
|
||||
DATABASE_INSTANCE.get_or_init(|| {
|
||||
// 只在第一次调用时初始化数据库
|
||||
Arc::new(Database::new().unwrap())
|
||||
}).clone()
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue