crane4j icon indicating copy to clipboard operation
crane4j copied to clipboard

ContainerProvider 应当支持根据扩展参数获取容器

Open Createsequence opened this issue 1 year ago • 0 comments

现有的 ContainerProvider 只支持根据命名空间字符串获取对应的容器,由于字符串的表示能力有限,导致包括 MyabtisPlusQueryContainerProvider 以及 AssembleEnumAnnotationHandler 所使用的内部提供者都被迫要将各种额外的参数拼接成字符串作为容器的命名空间。

因此,希望 ContainerProvider 允许在调用 getContainer 方法时,传入对象而非字符串作为查询条件,具体的匹配逻辑由 ContainerProviderOperationAnnotationHandler 配合完成。

要实现这个效果,可能需要调整下述组件:

  • AssembleOperation 中的 getContainer 应该返回一个 Object 对象,同时实现类应该记录 ContainerProvider 的名称;
  • AbstractOperationAnnotationHandler 中解析容器命名空间的逻辑需要做调整,应当返回一个 Object 对象;
  • ContainerManager 中根据 ContainerProvider 获取容器相关的逻辑也需要调整,当根据提供者获取容器时,第二个参数不再限制为容器的命名空间,并且相关 API 也不再支持通过 “$$” 方式拼接名称去获取容器;

Createsequence avatar Jul 17 '23 05:07 Createsequence