IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Spring Java Discussion :

[expert] pointcut basé sur annotation et méthodes surchargées


Sujet :

Spring Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 117
    Par défaut [expert] pointcut basé sur annotation et méthodes surchargées
    Salut,

    J'ai un aspect qui déclare un pointcut basé sur une annotation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "@annotation(my.package.MyAnnotation)"
    J'ai un bean Spring abstrait et générique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    public abstract class MyAbstractBeanBOImpl<T extends MyGenericType> extends
    		AbstractBOImpl<T> implements MyAbstractBeanBO {
    Ce bean déclare une méthode update :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public T update(T entity) {
    J'ai un bean Spring typé qui étend MyAbstractBeanBOImpl et surcharge la méthode update :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    @MyAnnotation("XXX")
             @Override
    	public MyTypedType update(MyTypedType entity) {
    Ce bean est configuré pour exposer un proxy avec proxy-target-classes à true.

    AOP ne se déclenche pas lors de l'appel de la méthode update de ImageBOImpl.
    AOP se déclenche si j 'annotation la méthode update de MyAbstractBeanBOImpl avec @MyAnnotation.

    Le problème c'est que je passe un paramètre à l'annotation, qui est spécifique au contexte de ma classe fille...donc il faut qu'elle soit mise sur la méthode de la classe fille.

    En fait on dirait qu'AOP se base sur la signature de la méthode parent. C'est normal ?

    J'ai regardé dans Spring Security (qui déclenche un aspect sur l'annotation @Secured) car le comportement n'est pas le même. Dans leur cas, ils ont un intercepteur à l'instanciation du bean qui pointe toutes les méthodes annotées @Secured et qui stocke dans un cache le paramètre de l'annotation, cache qui est lu ensuite lors de l'exécution de l'aspect. J'espère pouvoir arriver à faire ce que je fais sans avoir à coder un truc pareil.

    Une idée ?

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 117
    Par défaut
    en fait pour que le pointcut marche, il faut à la fois l'annotation sur la méthode du niveau abstrait ET sur celle du plus bas niveau. Mais dans tous les cas pour la valeur de l'annotation, c'est sur celle du niveau abstrait qu'il se base.

Discussions similaires

  1. Réponses: 0
    Dernier message: 14/06/2010, 17h48
  2. Réponses: 9
    Dernier message: 13/08/2007, 16h41
  3. [Java Webservice] sur JBoss méthodes surchargées
    Par smutmutant2003 dans le forum Wildfly/JBoss
    Réponses: 2
    Dernier message: 05/06/2007, 15h50
  4. Réponses: 1
    Dernier message: 30/05/2005, 17h02
  5. [forms] Bloc basé sur une clause from
    Par plaineR dans le forum Forms
    Réponses: 11
    Dernier message: 16/12/2004, 12h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo