在插件中封装服务



在Grails Services中,插件可以被注入到使用该插件的应用程序中。但是,如果你不想让某些服务是可注入的,你只希望插件知道它们呢?

有办法做到这一点吗?

你可以使用* grailplugin中的pluginexclude属性来实现。groovy脚本:

  def pluginExcludes = [
      "grails-app/services/com/my/package/MyService.groovy",           
  ] 

这样服务就不会被包含在打包的插件*.zip文件中。

一个缺点是这种方法不适用于本地插件-参见http://jira.grails.org/browse/GRAILS-5404

本地插件是使用指定路径从文件系统加载的插件:

grails.plugin.location.shiro = "/home/dilbert/dev/plugins/grails-shiro"

所有Grails服务都公开为Spring bean。这些bean可以通过应用程序上下文获得,因此也可以通过使用插件的应用程序获得。真的没有办法"保护"这些服务不被使用。

最新更新