确认
- [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循环调用