• 首页
  • 产品中心
    • 数式Oinone四大产品

      低代码开发平台无代码开发平台集成开发平台AI大模型开发
    • 数式Oinone体系能力

      用户与组织权限管理文件管理消息中心国际化业务审计
    • 数式Oinone核心产品特性

      低无一体面向软件公司场景无限制应用级扩容可分可合
  • 服务中心
    • 客户服务

      预约演示方案咨询私有部署找人定制
    • 开发者

      问答下载
    • Oinone学院

      社区学习

    《精讲面向软件公司的低代码平台——以Oinone为例》

  • 合作伙伴
    渠道申请伙伴名录专家库
  • 关于数式
0571-88757863

Common Extension Points And SPI List


I. SPI Mechanism

(Ⅰ) Pamirs SPI Framework

Integrates three service discovery mechanisms to support dynamic component extension:

  • Annotation Rules:
    • Interfaces specify default extension names (default is "pamirs") and loading factories via @SPI
    • Implementation classes set extension names via @SPI.Service (Spring SPI uses default Bean names, Java SPI uses full class names)
    • @Order/@Priority defines extension priority

(Ⅱ) Configuration Methods

1. Java SPI

  • Interface: public interface DemoApi { List<String> demo(); }
  • Implementation: @Order(10) public class DemoApiImpl implements DemoApi { ... }
  • Configuration file: Write implementation class full path in META-INF/services/interface full class name

2. Annotation SPI

  • Interface: @SPI("ext1") public interface DemoApi { ... }
  • Implementation: @SPI.Service("ext1") @Order(10) public class DemoApiImpl implements DemoApi { ... }

3. Spring SPI

  • Implementation: @Component("ext1") @Order(10) public class DemoApiImpl implements DemoApi { ... }

4. Invocation Methods

// Invoke by specifying extension name
DemoApi ext = ExtensionServiceLoader.getExtension(DemoApi.class, "ext1");

// Get ordered list by priority
List<DemoApi> spis = ExtensionServiceLoader.getExtensionLoader(DemoApi.class).getOrderedExtensions();

// Shortcut (Spider utility class)
DemoApi ext = Spider.getExtension(DemoApi.class, "ext1");

II. System Extension Points

(Ⅰ) Framework Layer

Extension PointImplementation LocationSPIInterface
Spring Type Converter*NoSpringTypeConverterRegister
#register
SPI Loader Factory*YesServiceLoaderFactory
SPI Path Setting*YesSpiClassPathApi

(Ⅱ) Metadata Scanning

Extension PointImplementation LocationSPIInterface
Metadata Annotation Converter*NoModelConverter
Metadata Model Signer*NoModelSigner
Metadata Annotation Converter Whitelistyaml:pamirs.configure.converter.annotationNoModelConverter interface implementation class name
Metadata Model Signer Whitelistyaml:pamirs.configure.signerNoModelSigner interface implementation class name
Scan path configuration for meta models processed by annotation convertersyaml:pamirs.meta.meta-packagesNoDefault:
pro.shushi.pamirs.meta.domain
pro.shushi.pamirs.boot.base.model

(Ⅲ) Metadata Calculation

Extension PointImplementation LocationSPIInterface
Model Encoding Interface*YesModelModelApi
Model Calculation Interface*YesModelComputeApi
Model Validation Interface*YesModelCheckApi
Model Directive Interface*YesModelDirectiveBatchApi
ORM Conversion Interface*YesOrmApi
Type System Interface*YesTypeProcessor
Inheritance Processing Extension Logic*YesInheritedExtendProcessor
Model Calculation Extension Logic*YesModelExtendComputer
Field Calculation Extension Logic*YesFieldExtendComputer
Metadata Calculation Extension Logic*YesMetaDataExtendComputer

(Ⅳ) API Layer

Extension PointImplementation LocationSPIInterface
Request Context Extension*YesSessionPrepareApi
Interceptor Construction Extension*YesInstrumentationApi
Action Binding Extension*YesActionBinderApi
Data Loader Registration Extension*YesDataLoaderRegistryApi

(Ⅴ) FaaS Layer

Extension PointImplementation LocationSPIInterface
Assemble Expression Context*YesSessionContextApi
Business Function Extension*YesBusinessFunctionsApi
Context Function Extension*YesContextFunctionsApi
Allowed/Blocked List for Executable Functions in Expressions*YesFaasScriptAllowListApi

(Ⅵ) ORM Layer

Extension PointImplementation LocationSPIInterface
Front-end Field Processing Extension Logic*YesFrontEndFieldExtendConverter
Front-end Field Calculation*NoFieldValueComputer
Back-end Field Processing Extension Logic*YesBackEndFieldExtendConverter
Field Serialization API*NoSerializer

(Ⅶ) Persistence Layer

Extension PointImplementation LocationSPIInterface
Data Source Routingpamirs-boot-*
yaml:pamirs.mapper.data-source-route-service
YesDataSourceRouteService#route
Unified Key Prefix Service for Data Frameworks*YesDataApiKeyService
Custom Parameters for Dynamic Data Source Routingpamirs-boot-*
yaml:pamirs.mapper.dynamic-ds-key-computer
YesDynamicDsKeyComputer
Custom Parameters for Data Table Name Calculationpamirs-boot-*
yaml:pamirs.mapper.table-name-computer
YesTableNameComputer#context
Fetch Logic Field Definitionspamirs-connectors-data-*
**yaml:pamirs.mapper.**logic-column-fetcher
YesLogicColumnFetcher
#fetchLogicColumnDefinitions
Fetch Logic Fieldspamirs-connectors-data-*
**yaml:pamirs.mapper.**logic-column-fetcher
YesLogicColumnFetcher
#fetchLogicColumns
Universal Mapper*NoPamirsMapper
Edit this page
Last Updated:1/15/26, 4:02 AM
Prev
EIP API
Next
Error Codes
默认页脚
Copyright © 2026 Mr.Hope