|
||
|
|
| Conheça o Plugfeed | » Início » Programação » Java » Annotations em uso --> |
|
Avaliação:
![]() ![]() ![]() ![]() | Publicado em: 28/11/2006Annotations em uso
Eder Magalhaes Eder Andrade de Magalhães, trabalha com desenvolvimento de software desde 2000, em diversos segmentos como Logística, CallCenter (CRM/CTI), Instituição bancária e outros. Atualmente é Arquiteto de Software pelo Instituto Metodista de Ensino Superior. É Sun Certified Programmer for the Java, Sun Certified Web Component Developer for J EE , Sun Certified Business Component Developer for the Java EE
Annotations em uso
Olá, pretendo mostrar neste artigo a utilização de Annotations, em um exemplo para resolver problemas de infra-estrutura do nosso código. Me refiro a infra-estrutura a regras nem sempre tão relacionadas ao negócio, mas fundamentais ao comportamento do software como um todo. Usaremos um exemplo ilustrativo de como efetuar validação no preenchimento de campos em Javabean. Problema: if (pessoa.getNome == null) Visto que hoje precisamos validar o preenchimento do bean Pessoa, mas em futuro bem próximo teremos de implementar novas versões para outros beans, como Endereço, Departamento, Funcionário, etc. Solução: Annotations! Abaixo segue o código da nossa anotação: Na linha 2 definimos a qual elemento sofrerá anotação, no nosso caso FIELD. Outros valores seriam: TYPE (class e interface), METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE e PACKAGE. Na linha 3 a declaração da Annotation, note a keywork @interface! Agora vamos partir para o nosso JavaBean Pessoa: /* * imports ignorados */ 1 public class Pessoa { 2 @Obrigatorio private String nome; 3 @Obrigatorio private String sobrenome; 4 @Obrigatorio private String cpf; 5 @Obrigatorio private int idade; /** getters e setters omitidos ... */ Note que nas linhas 2, 3, 4 e 5 junto da declaração dos campos, definimos também as marcações de obrigatoridade. Agora para encerrar o nosso exemplo, vamos declarar a classe responsável por validar o JavaBean, ValidadorBean! /* * imports ignorados */ public class ValidadorBean { 1 public void validar(Object obj) throws Exception { 2 Class classe = obj.getClass(); 3 Field[] fields = classe.getDeclaredFields(); 4 for (Field field : fields) { 5 if (field .isAnnotationPresent(Obrigatorio.class)) { 6 field.setAccessible(true); 7 if (field.get(obj) == null) 8 throw new Exception("Campo"+ field.getName()+" não preenchido!"); } } System.out.println("Validação OK !"); } } Este código é o mais complexo, pois lida com algumas API's de Reflection. Nas linhas 2, 3, 4, 5 e 6, o método avalia o objeto recebido por parâmetro e percorre seus campos verificando se o mesmo está marcado com a Annotation @Obrigatorio, caso esteja torna o atributo acessível, e na linha 7 verifica se o campo tem valor. Código de execução do programa: public static void main(String[] args) { Veja o resultado de uma execução do sistema: Campo sobrenome não preenchido! Este é um exemplo muito simples, e provavelmente sofria alterações para um ambiente real, mas a idéia é mostrar o poder e a facilidade que o desenvolvedor ganhar ao usar Annotations. Até a próxima, []'s. Arquivos anexos ao artigo
Links relacionados
ronnyfabio <ronnyfabio@pop.com.br>
Ótimo!!!
![]() ![]() ![]() ![]() ![]() Rodrigo Zini <rodrigo.zini@bol.com.br>
Parabens pelo artigo, simples e objetivo...
Muito bom para iniciantes... ![]() ![]() ![]() ![]() ![]() anonimo
ótimo!!!
![]() ![]() ![]() ![]() ![]() Marcelo <mbiaseto@yahoo.com.br>
Achei ótimo sua abordagem sobre o assunto, uma vez que estarei fazendo um trabalho sobre e dificilmente a gente vê praticidade em relação a explicações sobre o caso ...
Muito bom mesmo .... até ![]() ![]() ![]() ![]() ![]() Elias Moraes <jeliasmoraes@yahoo.com.br>
Muito bom mestre, continue assim
![]() ![]() ![]() ![]() ![]() Robson Fernandes <cti-robson@uol.com.br>
Meus Parabéns!! Excelente Matéria
![]() ![]() ![]() ![]() ![]() Luiz Claudio Destra <ldestra@uol.com.br>
Seus artigos são sempre excelentes.
Quando você vai ministrar outro curso na GlobalCode? ![]() ![]() ![]() ![]() ![]() joao maria <joao210180@yahoo.com.br>
Muito bom mesmo, deu pra entender...
![]() ![]() ![]() ![]() ![]() Daniel
mto bom... direto ao ponto
![]() ![]() ![]() ![]() ![]() ![]() |
![]() |
|
|