Grails 将服务封装在插件中

Grails 将服务封装在插件中,grails,grails-plugin,Grails,Grails Plugin,我从Grails服务中得到了这样的想法:可以将插件注入到使用该插件的应用程序中。但是,如果您不希望某些服务是可注入的,那么您只希望插件了解它们 还有其他方法可以实现吗?您可以使用*GrailsPlugin.groovy脚本中的pluginExcludes属性来实现: def pluginExcludes = [ "grails-app/services/com/my/package/MyService.groovy", ] 这样,服务就不会包含在打包

我从Grails服务中得到了这样的想法:可以将插件注入到使用该插件的应用程序中。但是,如果您不希望某些服务是可注入的,那么您只希望插件了解它们


还有其他方法可以实现吗?

您可以使用*GrailsPlugin.groovy脚本中的pluginExcludes属性来实现:

  def pluginExcludes = [
      "grails-app/services/com/my/package/MyService.groovy",           
  ] 
这样,服务就不会包含在打包的plugin*.zip文件中

一个缺点是这种方法不适用于就地插件-请参阅

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

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

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

你说的“你只想让插件知道它们”是什么意思?你能澄清一下吗?这难道不会把它完全排除在插件之外吗?这意味着插件本身也无法使用它?