расширение службы плагинов в Grails - PullRequest
0 голосов
/ 31 марта 2012


Я расширяю MarkupSanitizerService из плагина sanitizer. Могу ли я просто переопределить одну из функций - getSanitizer (), которая имеет мою обычную реализацию, или мне нужно скопировать другие функции в моем классе обслуживания из MarkupSanitizerService?

Заранее спасибо ..

Ответы [ 2 ]

1 голос
/ 01 апреля 2012

наследование грааля работает так же, как наследование Java. Вам просто нужно предоставить новую функцию с пользовательской реализацией

или вы можете получить фантазию и использовать метапрограммирование.

хорошая статья о метапрограммировании в groovy

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

Метапрограммирование - это написание компьютерных программ, которые пишут или манипулируют другими программами (или самими собой) в качестве своих данных или выполняют часть работы во время компиляции, которая в противном случае была бы выполнена во время выполнения. Во многих случаях это позволяет программистам выполнять больше работы за то же время, что и на написание всего кода вручную, или дает программам большую гибкость для эффективной обработки новых ситуаций без перекомпиляции

groovy предоставляет 2 типа метапрограммирования: метапрограммирование во время компиляции и метапрограммирование во время выполнения.

вы можете сделать что-то вроде следующего в вызовах загрузочного ремешка, которые должны работать

def grailsApplication

def init = { servletContext ->
    soSomethingWithAService()
}

def destroy = {
}

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

    }
    }
}
}
0 голосов
/ 31 июля 2015

Другой путь - расширить Сервис, а затем переопределить имя службы дезинфицирующего средства в вашем grails-app / config / spring / resources.groovy. Это должно дать желаемый эффект.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...