Elegir métodos en vez de closures tiene algunas ventajas:
- Memoria eficiente
- Permite uso de de controladores en singleton scope
- Puedes sobrescribir acciones de subclases y llamar al método de la superclase con super.actionName()
- Los métodos pueden ser interceptados con mecanismos estandar de proxying, algo que es complicado de hacer con closures ya que tienen campos
Si prefieres la sintaxis con closures o tienes un controlador antiguo creado en una versión anterior de Grails y quieres las ventajas de usar métodos, puedes poner en el BuildConfig.groovy la siguiente linea,
grails.compile.artefacts.closures.convert=truey en tiempo de compilación las transformaciones AST convertirán tus closures en métodos en el bytecode generado.
NOTA: Si un controlador extiende de otra clase que no está definida dentro del directorio app/controllers/, lo métodos heredados de esa clase no serán conertidos en acciones. Si la intención es exponer esos métodos heredados como acciones de un controlador, los métodos pueden ser sobreescritos en la subclase y el método de la subclase puede invocar al método en la super clase.
No hay comentarios:
Publicar un comentario