Grails插件开发 - 覆盖域类

时间:2013-08-13 12:29:09

标签: grails grails-plugin grails-domain-class

Grails中的插件是模块化应用程序的好方法。文档建议覆盖应用程序中使用此插件的插件中的工件。

它真的是最好的方法吗?

让我们通过示例来描述它:插件中定义了一个域类“org.User”。该应用程序将覆盖此域类。如果我使用“grails run-app”,那么就没有警告而且它有效。但Eclipse(GGTS)抱怨“类org.User的重复类定义无效”。对于一些开发人员而言,这并不重要,但我喜欢IDE帮助编写stuf,如“autocomplete”。

最后,两个类都编译为java类加载器的put。该类的应用程序版本在插件版本之前加载。类解析器首先找到它,这就是它工作的原因。如果我错了,请纠正我。在一个类加载器中有一个类的两个版本真是个好主意吗?

有哪些替代方案?

1 个答案:

答案 0 :(得分:1)

您可以像Spring Security Core插件一样,提供User类作为模板,因此使用此插件的应用程序可以选择创建自己的类还是安装默认的User类。

插件用户模板为here,负责在应用程序中创建此内容的脚本为here

您还需要一个配置值来了解要使用的类,并将其用于动态。

P.S:有很好的安全插件,如Shiro和Spring Security,也许更容易检查它们而不是创建自己的插件。