Sintaxe do filtro Grails ou Como chamar um filtro Grails fora de Grails

Grails fornecefiltros que correm antes de seus controladores. Eles são definidos em classes que se parecem com isso:

class SecurityFilters {
   def filters = {
       myFilter(controller:'*', action:'*') { // What are those weird colons??
           print "I'm filtering!"
           // Code that does the filtering goes here
       }
   }
}

Isso funciona muito bem, mas eu gostaria de entender melhor a sintaxe, pois ela não se parece com nenhum código Groovy que eu já vi antes. Em particular, a linha acima que começa commyFilter parece muito estranho. Esta é uma definição de método para um método chamadomyFilter? Se sim, o que:'*' significa depois de cada parâmetro? Eu pensei que poderia ser um valor de parâmetro padrão, mas isso seria='*'. Eu vi parâmetros nomeados usando dois pontos no métodochamadas antes, mas isso não poderia ser uma chamada de método porque eu não definimyFilter() em qualquer outro lugar.

Eu acho que eu entenderia muito melhor se alguém pudesse me dizer como executar o código de filtragem de uma classe Groovy normal. Em outras palavras, se eu tenho um arquivo MyFilters.groovy que contém as linhas acima, como eu poderia terminar este código Groovy para que ele imprime "Estou filtrando"?

import MyFilters
def mf = new MyFilters()
mf.filters.somethingGoesHere // Help! How do I finish this line so it calls my filtering code?

questionAnswers(2)

yourAnswerToTheQuestion