确认

  • [x] 我的版本是最新版本, 我的版本号与 version 相同, 并且项目里无依赖冲突
  • [x] 我已经在 issue 中搜索过, 确认问题没有被提出过
  • [x] 我已经修改标题, 将标题中的 描述 替换为你的想法(不得删除 描述 前面的部分)

功能改进

目前 MetaObjectHandler 只支援註冊一個 instance, 實際使用情境中, 總是會有些欄位需要做邏輯判斷是否要填充, 例如:

@Component
public class MyMetaObjectHandler implements MetaObjectHandler {

    @Override
    public void insertFill(MetaObject metaObject) {
        this.strictInsertFill(metaObject, "createUserId", Long.class, 123456L); // 預設填充
        if (matchSomeProperty) { // 需滿足判斷才填充
            ...
        }
        if (matchSomePlatform) { // 需滿足判斷才填充
            ...
        }
    }
}

當判斷條件越來越多, 這個 class 會變得複雜且難以維護

若能支援註冊多個 MetaObjectHandler, 就可以使用 Spring 原生提供的 @ConditionalOnXXX 的機制, 將填充邏輯拆分更小更獨立, 並提升擴充性與可維護性, 例如:

@Bean
@ConditionalOnProperty("...")
MetaObjectHandler someMetaObjectHandler() {
    return new SomeMetaObjectHandler();
}

@Bean
@ConditionalOnCloudPlatform(...)
MetaObjectHandler otherMetaObjectHandler() {
    return new OtherMetaObjectHandler();
}

参考资料

No response

Comment From: miemieYaho

MyMetaObjectHandler里自己存list循环调用