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:
@Retention (RetentionPolicy.RUNTIME)
@Target (ElementType.METHOD)
@Documented
public @interface Log {
Class type();
String method();
}
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:
@Log (type=Contact.class, method="updateContact")
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.
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.
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?
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;
[quote=dsrmf]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;
Vivendo e Aprendendo.[/quote]
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!