| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/11/2006 17:50:43
|
RicardoLuis
JavaEvangelist
Membro desde: 12/08/2003 14:47:56
Mensagens: 393
Localização: Cuiabá / MT
Offline
|
Olá pessoal
Eu estou tentando criar uma anottaion para a realização de atividades de log na aplicação, isto é, todos os métodos que forem anotados devem realizar o log.
Para uma etapa inicial, fiz uma annotation bem simples, que possui o seguinte código:
Ou seja, com esta annotation eu seto a classe a ser persistida e o nome do método que está realizando o acesso.
Para acessar a annotation eu faço o seguinte:
Agora vamos ao problema: como faço para o Java realizar uma ação nos métodos que recebem está annotation? Este conceito que eu ainda não consegui entender.
Desde já agradeço pela ajuda.
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/11/2006 18:16:24
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
Você vai precisar fazer algo semelhante ao AspectWerkz com Annotations. Veja a documentação e entenda por que é que é tão complicado.
De qualquer maneira, lembre-se que Annotations, em seu uso comum, não modificam o funcionamento de seu programa. É só quando são usadas com alguns outros recursos (tais como Java Agents etc.) que é possível modificar o funcionamento.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 27/11/2006 19:25:30
|
RicardoLuis
JavaEvangelist
Membro desde: 12/08/2003 14:47:56
Mensagens: 393
Localização: Cuiabá / MT
Offline
|
Eu gostaria apenas que os métodos que receberem minha anotação executem um método logo após sua execução. Até para uma ação simples como esta o precesso de execução da anotação é complexo?
Você aconselha eu chamar o método normalmente ao invés de criar a anotação?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 27/11/2006 19:49:15
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
RicardoLuis wrote:Eu gostaria apenas que os métodos que receberem minha anotação executem um método logo após sua execução.
Eu aconselho você a aprender AOP (AspectWerkz ou AspectJ) se quiser fazer exatamente isso que você quer fazer. Você vai descobrir duas coisas:
- O que você quer fazer já está pronto e testado;
- É muito mais simples que parece.
Acho que neste fórum há pelo menos umas três ou quatro pessoas que são feras em AspectWerkz. Mister__M, apresente-se!
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 27/11/2006 19:54:32
|
RicardoLuis
JavaEvangelist
Membro desde: 12/08/2003 14:47:56
Mensagens: 393
Localização: Cuiabá / MT
Offline
|
OK, vou dar uma olhada por aqui em AOP, assim que surgirem as dúvidas irei postando as mesmas aqui.
Muito obrigado thingol pela ajuda.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 27/11/2006 21:46:37
|
Luca
Moderador
![[Avatar]](/images/avatar/17e62166fc8586dfa4d1bc0e1742c08b.jpg)
Membro desde: 06/09/2002 14:30:10
Mensagens: 5810
Localização: São Paulo/SP ou Paraty/RJ
Offline
|
Olá
Achei vários links legais aqui: http://www.google.com/search?q=create+annotation+java
http://java.sun.com/j2se/1.5.0/docs/guide/apt/GettingStarted.html
http://www.oracle.com/technology/pub/articles/hunter_meta_2.html
http://today.java.net/pub/a/today/2005/07/05/IOCAnnotation.html
http://www.onjava.com/pub/a/onjava/2004/10/20/asm.html
http://www.javaworld.com/javaworld/jw-08-2005/jw-0801-annotations.html
http://www.javaworld.com/javaworld/jw-03-2005/jw-0321-toolbox.html
[]s
Luca
|
Dare Obasanjo (Program Manager at Microsoft)
"The folks I know from across the industry who have to build large scale Web services on the Web today at Google, Yahoo!, Facebook, Windows Live, Amazon, etc are using RESTful Web services. The only times I encounter someone with good things to say about WS-* is if it is their job to pimp these technologies or they have already "invested" in WS-* and want to defend that investment."
CEP, JMS, JMX e coisas afins (ou não)
http://lucabastos.blogspot.com/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 28/11/2006 05:08:32
|
mister__m
Virtual Machine Man
![[Avatar]](/images/avatar/89b9c689a57b82e59074c6ba09aa394d.jpg)
Membro desde: 18/03/2005 16:13:17
Mensagens: 736
Offline
|
thingol wrote:[Acho que neste fórum há pelo menos umas três ou quatro pessoas que são feras em AspectWerkz. Mister__M, apresente-se!
Eu!
Ricardo, veja se algo nessa minha palestra sobre AOP com AspectWerkz te ajuda.
|
Michael Nascimento Santos, aka Mister M
Summa Technologies do Brasil - http://www.summa-tech.com/
genesis: Uma nova forma de desenvolver aplicações - https://genesis.dev.java.net/
ThinNB: Suporte a Thinlet no NetBeans - https://thinnb.dev.java.net/
Líder da JSR-310 - Date and Time API
Expert Group Member das JSRs 207 (PD4J), 250 (Common Annotations), 270 (Java 2 SE 6.0), 296 (Swing Framework) e 303 (Bean Validation)
SouJava: Fortalecendo a comunidade Java brasileira - https://soujava.dev.java.net/ https://www.soujava.org.br/
JSR Community @ java.net - http://community.java.net/jsr
Blogs - http://blog.michaelnascimento.com.br/ http://today.java.net/pub/au/80
Twitter - @mr__m |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 28/11/2006 11:22:20
|
RicardoLuis
JavaEvangelist
Membro desde: 12/08/2003 14:47:56
Mensagens: 393
Localização: Cuiabá / MT
Offline
|
Obrigado a todos pelas repostas. Ajudou muito.
Agora mãos a obra. :p
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 01/12/2006 14:51:27
|
RicardoLuis
JavaEvangelist
Membro desde: 12/08/2003 14:47:56
Mensagens: 393
Localização: Cuiabá / MT
Offline
|
Só vim aqui para dizer que utilizei Spring AOP que as annotations funcionaram perfeitamente.
Não conhecia a orientação a aspectos e achei muito interessante.
Muito obrigado.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/02/2008 14:04:59
|
dsrmf
Entusiasta Java
Membro desde: 28/05/2004 08:48:46
Mensagens: 18
Offline
|
Desculpe senhores mais vc's todos estão errados com o uso da api de reflexão é possivel verificar se
um método possui uma determinada anotação e obtê-la;
Method method = seuObjeto.getClass().getMethod(nameMethodGet,ArrayUtils.EMPTY_CLASS_ARRAY);
SuaAnnotations objAnnotations = method.getAnnotation(SuaAnnotations.class);
e verificar se objAnnotations é !=null
API de reflexão não é para menino.
Vivendo e Aprendendo.
This message was edited 3 times. Last update was at 07/02/2008 14:29:58
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 10/11/2010 13:36:57
|
Fox McCloud
JavaEvangelist
![[Avatar]](/images/avatar/8860a4e27cbbe4c63821b429211684a3.jpg)
Membro desde: 29/06/2005 09:29:46
Mensagens: 440
Offline
|
dsrmf wrote:Desculpe senhores mais vc's todos estão errados com o uso da api de reflexão é possivel verificar se
um método possui uma determinada anotação e obtê-la;
Method method = seuObjeto.getClass().getMethod(nameMethodGet,ArrayUtils.EMPTY_CLASS_ARRAY);
SuaAnnotations objAnnotations = method.getAnnotation(SuaAnnotations.class);
e verificar se objAnnotations é !=null
API de reflexão não é para menino.
Vivendo e Aprendendo.
AHUAHUAHUAHUAHUAHUAHUA
Convido o sr. a reler os posts para verificar que em nenhum momento foi dito que não era possível!
A intenção do Ricardo era disparar um método toda vez que determinados métodos dele fossem chamados, que é exatamente o que a orientação a aspectos faz através do uso dos pontos de junção, e portanto foi aconselhado que AOP é o melhor caminho!
Mas já que o sr. preferiu explicar COMO o Ricardo pode fazer do jeito desaconselhado (boas práticas de desenvolvimento pra quê, não é mesmo?), seja bem-vindo!
Vivendo e aprendendo...!
|
"Denial is the most predictable of all human responses" - Matrix Architect |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 10/11/2010 14:31:39
|
Marky.Vasconcelos
Moderador
![[Avatar]](/images/avatar/04940fadf3702cbd84b7a48161037c4f.png)
Membro desde: 11/04/2007 18:18:20
Mensagens: 5932
Localização: São Paulo/SP
Offline
|
E já que voce fez questão de upar um tópico que tava queto a 2 anos, farei questão de tranca-lo para não gerar mais discussões desse tipo.
|
Facebook @MarkyHitchhiker +Mark WP: MarkyTech's
Projects:
Android Roadmap - Aprenda Android do inicio (Java é o unico pre-requisito)
Towel ( ObjectTableModel & Swing & Utils )
Tower Defense Game - Java2D [Open-Source] [How-to-play]
EVGD: Programação de jogos (links) Ponto V! - Desenvolvimento de jogos para indies, curiosos e profissionais
DefaultTableModel?! PARE! Não faça isso! Faça melhor!
Dicas: Faça perguntas inteligentes! ; MigLayout ; GridBagLayout (Joke)
Develop games is fantastic, with words you can make worlds!!!
DON'T PANIC!
MarkyHitchhiker's Blog! |
|
|
 |
|
|