Groovy: anotações poderosas!

2013년 텍스토 에스크리토



Groovy tem algumas anotações incrívelmente poderosas que vejo serem pouco faladas por aqui. O objetivo deste post é apresentá-las: como verão elas realmente não quebram galhos, mas troncos de sequóias!

간단한 로깅



Estas anotações provávelmente todos vocês já conhecem: são o suporte que a linguagem nos oferece para os mais variados frameworks de logging que a plataforma Java tem a nos oferecer.



  • - para o java.util.logging
  • @Commons - Apache Commons 로깅
  • 항목
  • @Log4j - Log4j 1.x
  • @Slf4j - SLF4J
  • @Log4j2 - Para o Log4j 2.x(Groovy에서 2.2 버전으로 변경)

  • 단순한 기능: 로깅 선호하는 프레임워크를 나타내는 주석 클래스 주석. Será injetado um novo atributo na sua classe chamado log que responde ao objeto Logger do seu framework. Em seguida, bista usá-lo exatamente com o faria no Java. 예를 들면 다음과 같습니다.

    
    import groovy.util.logging.*
    
    @Log4j //pro caso do Log4J
    class Brutality {
    def metodo() {
    // olha aqui o seu logger
    log.info "Logando!"
    }
    }
    
    


    O nome do logger por default equivale ao da classe. 사용자 정의를 원하십니까? Fácil: bast passar uma string como valor para a anotação. 예: @Log4j("logandoBruto") para um logger chamado logandoBruto. Depois basta configurar o seu framework da maneira que preferir.

    Objetos imutáveis? Fácil também.



    주석 @Immutable do Groovy는 클래스의 귀속자 중 하나가 아닌 다른 이름으로 변경해야 합니다. Regra simples: sua classe deve ser do tipo final para que a regra se aplique. 당신은 무엇입니까? 단순함: 세귀어의 예는 없습니다!

    
    import groovy.transform.*
    @Immutable
    final class PessoaImutavel {
    String nome
    String sobrenome
    }
    
    


    Pronto: os setters gerados quando esta classe anotada são muito parecidos com o código a seguir:

    
    void setNome(String valor) {
    if (this.nome == null) {this.nome = valor;}
    }
    
    


    @Memoized(Groovy 2.2)와 함께 사용하는 방법



    Groovy 2.2의 최신 버전: 주석 @Memoized. O que ela faz é cachear o resultado da invocação de uma função. Deve ser aplicada naqueles seus métodos cujo resultado semper é o mesmo para um dado conjunto de argumentos, ou seja, as funções que não dependsem de efeitos colaterais.

    com cuidado este recurso: aplique-o somente em funções que semper retornam o mesmo valor para um dado conjunto de paraâmetros를 사용하세요. Abaixo está um exemplo da sua aplicação:

    
    import groovy.transform.*
    
    class IntegratorTabajara {
    
    @Memoized
    double calculoBruto(double parametro) {
    
    // após longo cálculo retorna o valor
    }
    
    }
    
    


    Após a primeira invocação, caso o paraâmetro seja o mesmo, será retornado apenas o valor computado para aquele valor. Isto aumenta muito a performance do seu sistema quando bem aplicado(quando bem aplicado).

    @ToString과 함께 문자열 형식을 대표합니다.



    Pra finalizar uma anotação que vai te poupar muito tempo. Você sabe aqueles momentos em que fica escrevendo aquela função toString para retornar uma Representativeação dos seus objetos (especialmente em Grails quando queremos expô-los de uma forma bacaninha nos combos)? Há uma anotação que faz este trabalho pra você.

    De novo, é simples: bast anotar sua classe com @ToString como no example abaixo:

    
    import groovy.transform.*
    @ToString
    class Pessoa {
    String nome
    String sobrenome
    }
    
    println new Pessoa(nome:"Henrique", sobrenome:"Lobo")
    // saida formatada:
    // Pessoa(Henrique, Lobo)
    
    


    Mais simples impossível: poupa muito tempo. :)

    결론



    Groovy.transform을 가져오거나 가져오는 다양한 예가 있습니까? Todas estas anotações são baseadas no recurso AST(Abstract Syntax Tree) Transformations do Groovy, que nos permite alterar o processo de compilação do código. Um recurso muito interessante sobre o qual explaino escrever em muito breve. ;)

    Ah, e poupe seu tempo com estas anotações ok?

    좋은 웹페이지 즐겨찾기