Skip to content

[feat] 重写 database-ioc 模块#664

Merged
Bkm016 merged 1 commit intoTabooLib:dev/6.2.3from
FxRayHughes:feat/rewrite-ioc-663
Feb 11, 2026
Merged

[feat] 重写 database-ioc 模块#664
Bkm016 merged 1 commit intoTabooLib:dev/6.2.3from
FxRayHughes:feat/rewrite-ioc-663

Conversation

@FxRayHughes
Copy link
Contributor

改动概述

重写 database-ioc 模块为真正的 IoC 容器,持久化完全交给 database-ptc-object

database-ioc 模块(重写)

  • 注解体系@Component(scope) / @Resource / @PostConstruct / @PreDestroy
  • BeanContainer:核心容器,管理 Bean 注册、依赖解析、实例化,支持 SINGLETON / PLAYER / PROTOTYPE 作用域
  • PlayerScope:玩家作用域管理,绑定 join/quit 事件,定时自动保存,支持数据类和服务类 Bean
  • PlayerOperator:玩家数据管理器基类,支持选择性字段更新(update(KProperty1...))
  • PlayerData:玩家数据类抽象基类,内置 @Id UUID
  • PersistenceManager:ptc-object 桥接层,自动建表和创建 DataMapper
  • ComponentVisitor:ClassVisitor 集成,ENABLE 阶段扫描 @Component
  • 移除旧的 IOCReader / IOCDatabase / Serialization / Linker 体系

database-ptc-object 模块(增强)

  • AnalyzedClass:新增字段扫描模式,支持无带参构造器的 body property 类(如 class Foo { var x = 0 }
  • AnalyzedClassMember:新增 FieldWithPropertyAnnotations,通过检查 Kotlin 编译器生成的 get<Name>$annotations 合成方法,兼容 @Id var x@field:Id var x 两种写法
  • 注解恢复 PROPERTY 目标,运行时自动兜底

主要修改文件

  • module/database/database-ioc/ — 整体重写
  • module/database/database-ptc-object/src/main/kotlin/taboolib/expansion/AnalyzedClass.kt
  • module/database/database-ptc-object/src/main/kotlin/taboolib/expansion/AnalyzedClassMember.kt
  • module/database/database-ptc-object/src/main/kotlin/taboolib/expansion/Annotations.kt

Closes #663

database-ioc:
- 新增 BeanContainer 核心容器,支持 SINGLETON/PLAYER/PROTOTYPE 作用域
- 新增 @Component/@Resource/@PostConstruct/@PreDestroy 注解体系
- 新增 PlayerScope 管理玩家 Bean 生命周期(join/quit/定时保存)
- 新增 PlayerOperator 基类,支持选择性字段更新
- 新增 PersistenceManager 桥接 ptc-object 持久化
- 新增 ComponentVisitor 在 ENABLE 阶段扫描 @component 类
- 移除旧的 IOCReader/IOCDatabase/Serialization/Linker 体系

database-ptc-object:
- AnalyzedClass 支持字段扫描模式(无带参构造器的 body property 类)
- AnalyzedClassMember 新增 FieldWithPropertyAnnotations,
  通过检查 Kotlin 生成的 $annotations 合成方法兼容 property 注解
- 注解恢复 PROPERTY 目标,运行时自动兜底
@Bkm016 Bkm016 merged commit fc67ee8 into TabooLib:dev/6.2.3 Feb 11, 2026
0 of 2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[feat] 重写 database-ioc 模块

2 participants

Comments