我从sanitizer插件扩展MarkupSanitizerService。 我可以重写其中一个函数 - getSanitizer(),它有我的custome实现,还是我需要从MarkupSanitizerService中复制服务类中的其他函数?
在grails中扩展插件服务
在此先感谢..
我从sanitizer插件扩展MarkupSanitizerService。 我可以重写其中一个函数 - getSanitizer(),它有我的custome实现,还是我需要从MarkupSanitizerService中复制服务类中的其他函数?
在grails中扩展插件服务
在此先感谢..
大盘继承的工作方式相同Java继承。你只需要提供你的新功能与自定义实现
或者你可以花哨和使用元编程。
在常规
http://www.ibm.com/developerworks/java/library/j-pg06239/index.html
元编程的元编程的好文章是说写或操纵其他程序(或自己)作为他们的数据,或做在编译工作的一部分计算机程序编写时间,否则会在运行时完成。在许多情况下,这允许程序员在与手动编写所有代码相同的时间内完成更多的工作,或者它使程序更加灵活地有效地处理新的情况而不需要重新编译
groovy supplies 2种元编程技术:编译时间元编程和运行时元编程。
,你可以这样做在举调用下面应该工作
def grailsApplication
def init = { servletContext ->
soSomethingWithAService()
}
def destroy = {
}
private def doSomethingWithAService() {
grailsApplication.serviceClasses.each { serviceClass ->
// do something
def result
return result
}
}
}
}
这真是一个好方法。尽管我最终扩展了服务,但这不会要求使用此服务的代码发生任何更改。非常感谢。 – 2012-03-31 23:13:15
另一条路线采取将延长服务,然后在您的覆盖消毒服务的名称的grails-app /config/spring/resources.groovy这应该具有预期的效果。
它只需要扩展自定义函数。 – 2012-03-31 04:04:28
为什么不使用元编程来替换应用程序启动时的方法? – 2012-03-31 08:16:20
感谢提示tomas – 2012-03-31 23:14:45