2

想象一下,您有一个具有出色服务层的 Grails 项目,并且您希望确保您的团队仅通过您的服务访问模型。

是否可以轻松地限制动态查找器,以便它们仍然可以在服务内部(相同的包)使用,但不能在外部使用?

我可以想象覆盖它们,但随后它们也消失了服务......

4

2 回答 2

1

确实没有一种简单的方法可以限制方法调用的来源。您可以编写一个全局 AST 转换来查找动态查找器调用并禁止所有非来自服务的调用。如果您精通编写 AST 转换,那将不会过于复杂,但也不是微不足道的。如果您不擅长编写 AST 转换,那么我不建议您将其作为您在该领域的第一次冒险。老实说,我不推荐任何一种方式,但它是您问题的答案。可以做到,但我不会说有一个简单的方法。

于 2014-05-08T13:22:28.923 回答
1

有一个用于CodeNarc的 grails 插件,它会进行静态分析,如果开发人员犯了违规行为,可能会导致构建失败。

有几个内置的Grails 规则,但它们并不能满足您的要求。您需要创建自定义规则。请参阅此截屏视频

最接近的可能是GrailsDomainWithServiceReference 它检查 Grails 域类没有注入服务类。

于 2014-05-08T14:51:27.890 回答