| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 03/03/2009 07:52:33
|
marciobarroso
Virtual Machine Man
![[Avatar]](/images/avatar/6828f61cee49c7a4da0f9c1d3e03b857.jpg)
Membro desde: 13/05/2005 23:17:13
Mensagens: 508
Localização: Barueri / SP / BR
Offline
|
Pessoal,
Criei um aspecto:
Isso significa que todos os métodos executados dentro do diretório cc.marcio.cache.service.* serão interceptados.
Gostaria de melhorar este aspect usando annotation, onde ao invés de executar a cada método do pacote, só executaria no método que fosse anotado.
Alguém sabe se isso é possivel ou poderia me dar uma idéia de como fazer isso?
De qualquer forma, estou pesquisando, e caso encontre a solução, eu posto aqui.
[]'s
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 03/03/2009 11:29:53
|
marciobarroso
Virtual Machine Man
![[Avatar]](/images/avatar/6828f61cee49c7a4da0f9c1d3e03b857.jpg)
Membro desde: 13/05/2005 23:17:13
Mensagens: 508
Localização: Barueri / SP / BR
Offline
|
Resolvi o problema fazendo o seguinte:
Criei a anotação:
Meu aspecto ficou da seguinte forma:
Sendo assim, para que um método seja interceptado pelo Aspecto, basta anotá-lo conforme abaixo:
Se por acaso alguém tiver alguma sugestão de como melhorar esta implementação, por favor comentar.
[]'s
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 03/03/2009 12:04:19
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
Não seria um pouquinho mais rápido:
:?:
(Não testei portanto não sei se funciona. Obviamente usar "getAnnotation" em vez de "getDeclaredAnnotations" tem uma semântica um pouco diferente, já que "getAnnotation" pega anotações herdadas, e "getDeclaredAnnotations" só pega as diretamente anotadas na classe.)
This message was edited 1 time. Last update was at 03/03/2009 12:04:39
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 03/03/2009 12:23:26
|
marciobarroso
Virtual Machine Man
![[Avatar]](/images/avatar/6828f61cee49c7a4da0f9c1d3e03b857.jpg)
Membro desde: 13/05/2005 23:17:13
Mensagens: 508
Localização: Barueri / SP / BR
Offline
|
O incrivel thingol foi que eu executei o processo pegando os milisegundos para ver qto estava demorando, e praticamente não tem diferença. E como vc mesmo disse, o interessante é que eu considere somente as anotações declaradas diretamente no método.
Mas algo que esta me deixando com a pulga atrás da orelha é que eu encontrei uma implementação onde eu declaro a annotation no meu aspecto, mas não estou conseguindo entender como fazer o aspecto considerar somente os métodos anotados.
O processo que eu fiz irá considerar todos os métodos publicos dentro do projeto, e eu irei filtrar somente pelo if ... esta tentando fazer um filtro mais inteligente.
Eu encontrei este link mas não consegui entender mto bem como fazer meu pointcut entender que eu irei considerar somente os métodos anotados.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 04/03/2009 12:23:52
|
marciobarroso
Virtual Machine Man
![[Avatar]](/images/avatar/6828f61cee49c7a4da0f9c1d3e03b857.jpg)
Membro desde: 13/05/2005 23:17:13
Mensagens: 508
Localização: Barueri / SP / BR
Offline
|
Resolvi o problema com a seguinte solução:
Desta forma, os únicos métodos da aplicação que serão interceptados são os que forem anotados com @AutoCache.
[]'s
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/03/2009 16:36:42
|
marciobarroso
Virtual Machine Man
![[Avatar]](/images/avatar/6828f61cee49c7a4da0f9c1d3e03b857.jpg)
Membro desde: 13/05/2005 23:17:13
Mensagens: 508
Localização: Barueri / SP / BR
Offline
|
Pessoal,
Mais um problema no mesmo escopo.
Eu tenho na minha aplicação o spring fazendo a injeção de dependências dos objetos.
No spring, eu associo uma interface a um bean, e o mesmo via polimorfismo, instancia a implementação e injeta onde é necessário.
No meu aspecto, quando eu tento fazer o seguinte ...
... esta printando o seguinte :
O problema é que desta forma não estou conseguindo acessar a implementação do método, pois preciso recuperar algumas anotações que estão na implementação e a própria execução do método.
Alguém sabe como resolver isso?!?
Obrigado,
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/03/2009 09:01:46
|
marciobarroso
Virtual Machine Man
![[Avatar]](/images/avatar/6828f61cee49c7a4da0f9c1d3e03b857.jpg)
Membro desde: 13/05/2005 23:17:13
Mensagens: 508
Localização: Barueri / SP / BR
Offline
|
Ninguém tem idéia??!?! Desculpe o desespero
|
|
|
 |
|
|