在grails中扩展插件服务

时间:2012-03-31 03:31:38

标签: inheritance grails service


我正在从清理程序插件扩展MarkupSanitizerService。 我可以覆盖其中一个函数 - getSanitizer(),它具有我的客户实现,还是我需要从MarkupSanitizerService复制我的服务类中的其他函数?

提前致谢..

2 个答案:

答案 0 :(得分:1)

grail继承与java继承的工作方式相同。您只需要使用自定义实现提供新功能

或者你可以得到幻想并使用元编程。

关于groovy中元编程的好文章

http://www.ibm.com/developerworks/java/library/j-pg06239/index.html

元编程是指编写或操纵其他程序(或自身)作为数据的计算机程序,或者在编译时执行部分工作的计算机程序,否则将在运行时完成。在许多情况下,这允许程序员在与手动编写所有代码所花费的时间相同的时间内完成更多工作,或者它为程序提供了更大的灵活性,无需重新编译就能有效地处理新情况

groovy提供了两种类型的元编程技术:编译时元编程和运行时元编程。

你可以在启动带调用中执行以下操作

def grailsApplication

def init = { servletContext ->
    soSomethingWithAService()
}

def destroy = {
}

private def doSomethingWithAService() {
grailsApplication.serviceClasses.each { serviceClass ->
       // do something
        def result 
        return result

    }
    }
}
}

答案 1 :(得分:0)

另一条路线是扩展服务,然后覆盖grails-app / config / spring / resources.groovy中的清理服务名称。这应该具有预期的效果。