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 :

Spring AOP, pointcut sur une méthode avec annotat Transactional propagation REQUIRED


Sujet :

Spring Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de 17mounir
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2005
    Messages : 101
    Par défaut Spring AOP, pointcut sur une méthode avec annotat Transactional propagation REQUIRED


    Je cherche à faire un aspect avec un advice lancé à la sortie des méthodes de ma couche service, je cherche à intercepter que les méthodes avec l'annotation @Transactional(propagation = Propagation.REQUIRED)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <!-- Aspects en AOP -->
    <aop:config>
    	<aop:aspect id="observerAspect"  ref="observerAdvice">
                   <aop:pointcut id="myPointcut" expression="execution(* *.I*Service.*(..))" />
                   <aop:after pointcut-ref="myPointcut" method="sendObservation" />
    	</aop:aspect>
    </aop:config>
     
    <!-- Advice -->	
    <bean id="oserverAdvice"    class=" x.ObserverAdvice" >
    </bean>
    Ceci intercept toutes les méthodes de ma couche service, moi je veux juste celles avec la Transaction Required.

    quelqu'un a une idée

    Merci !

  2. #2
    Rédacteur
    Avatar de Hikage
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 177
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 177
    Par défaut
    Je ne pense pas qu'il y ait moyen de faire une expression 'aspect J' qui va vérifier la valeur d'une annotation.

    Tu dois faire cette vérification dans ton code je pense
    Hikage
    SCJP / SCWCD & SCWSJD Certified / Spring Framework Certified
    [Personal Web] [CV]

    F.A.Q Spring Framework - Participez !

  3. #3
    Membre confirmé Avatar de 17mounir
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2005
    Messages : 101
    Par défaut
    C'est ce que je fait avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    public void sendObservation(JoinPoint joinPoint) {
     
    	Method interceptedMethod = getMethod(joinPoint);
    	logger.debug("Intercepted method ! in the Service Layer : " + interceptedMethod.getName());
     
    	Transactional annot = interceptedMethod.getAnnotation(Transactional.class);
     
    	if (annot != null && (annot.propagation() == Propagation.REQUIRED || annot.propagation() == Propagation.REQUIRES_NEW)) {
    		logger.debug("Intercepted method ! in the Service Layer : " + interceptedMethod.getName() + " has annotation REQUIRED or REQUIRES_NEW");	
    	}
    }
     
     
    private Method getMethod(JoinPoint jp) {
    	Method invoked = null;
    	MethodSignature met = (MethodSignature) jp.getSignature();
     
    	try {
    		invoked = jp.getSourceLocation().getWithinType().getMethod(met.getMethod().getName(), met.getMethod().getParameterTypes());
     
    	} catch (NoSuchMethodException e) {
    		e.printStackTrace();
    	}
    	return invoked;
    }
    Mais c'est très pénalisant car j'ai un pourcentage de 5% max des méthodes qui m'interessent et donc le plus grand nombre des interceptions ne servent à rien.

Discussions similaires

  1. Appel d'une méthode sur une classe avec héritage
    Par SasakiKojiro dans le forum Général Java
    Réponses: 13
    Dernier message: 17/04/2015, 18h56
  2. Réponses: 0
    Dernier message: 20/05/2012, 20h58
  3. Réponses: 1
    Dernier message: 05/03/2012, 10h01
  4. [MVC] Iterer sur une Hashmap avec les tag spring mvc options
    Par Ytsaeb dans le forum Spring Web
    Réponses: 0
    Dernier message: 31/01/2012, 14h35
  5. Réponses: 9
    Dernier message: 09/12/2008, 00h07

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