Это не совсем то же самое, что метод утилизации службы, но я закончил тем, что зарегистрировал Spring Bean с помощью метода завершения работы, который вызывается при остановке приложения.
Сначала создайте класс bean-компонента, например grails-app/utils/MyShutdownBean.groovy
, который выглядит следующим образом (в имени класса или имени метода нет ничего священного, используйте все, что вы хотите):
class MyShutdownBean {
public void cleanup() {
// Do cleanup stuff
}
}
Затем зарегистрируйте бин в grails-app/conf/spring/resources.groovy
следующим образом:
beans = {
myShutdownHook(MyShutdownBean) { bean ->
bean.destroyMethod='cleanup'
}
}
Если вы хотите выполнять очистку только на производстве, вы можете зарегистрировать ее следующим образом:
beans = {
if (!grails.util.GrailsUtil.isDevelopmentEnv()) {
myShutdownHook(MyShutdownBean) { bean ->
bean.destroyMethod='cleanup'
}
}
}