我想将 Grails 应用程序拆分为更小的插件。一些域类具有枚举类型的属性。这些枚举中的一些值在逻辑上将成为插件的一部分,因此我正在寻找一种方法让每个插件将其自己的值注册到“核心”枚举中。
显然,这不能用 Enums 完成,因为它们不能在运行时修改。
我看到的一个选择是将每个 Enum 替换为具有静态属性的类,并添加一个静态方法来从插件注册新值。这会产生以下后果:
- GORM 将不知道为假 Enum 值存储什么,因此它会抛出异常
- 因此,我必须将这些属性的类型更改为字符串,这样它仍然可以使用存储中的当前值,但是我失去了查看该属性可以在何处获取其值的优势。
有一个更好的方法吗?我是否采取了一种不是“Grails 方式”的方法?
最后,我正在寻找一种在核心应用程序中为插件做扩展点的方法,就像我在 Java 中使用 ServiceProvider 所做的那样。