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