我有一个 OSGi 应用程序。每个 OSGi 模块都由一些业务逻辑和数据模型组成。我计划在每次新模块第一次启动时进行模式演变。正如我上面提到的,每个模块都包含扩展应用程序核心数据模型的数据模型。因此,我需要在新模块启动之前创建一些新表。
我能想到的唯一解决方案是扩展器模式。换句话说,将有一个名为的模块db-schema-extender
,它将等待DbSchemaEvolutionService
. 该服务的实现将由愿意扩展应用程序核心数据模型的每个模块提供。当在 OSGi 服务注册表中请求此类实现时,db-schema-extender
将调用 DbSchemaEvolutionService.getEntities()
方法来获取实体列表,然后db-schema-extender
将执行schemaExport(List<Object> entities)
创建新模块所需的表。
你有遇到类似问题的经验吗?
你的解决方案是什么?
您如何看待我提出的解决方案?