Joinpoint VS ProceedingJoinPoint en AOP à l'aide de aspectJ?
Quelqu'un peut-il me dire quelle est la différence entre Joinpoint
et Proceedingjoinpoint
?
Quand utiliser Joinpoint
et Proceedingjoinpoint
dans la méthode de l'aspect de la classe ?
J'ai utilisé le JoinPoint
dans mon AspectJ class
comme ,
@Pointcut("execution(* com.pointel.aop.test1.AopTest.beforeAspect(..))")
public void adviceChild(){}
@Before("adviceChild()")
public void beforeAdvicing(JoinPoint joinPoint /*,ProceedingJoinPoint pjp - used refer book marks of AOP*/){
//Used to get the parameters of the method !
Object[] arguments = joinPoint.getArgs();
for (Object object : arguments) {
System.out.println("List of parameters : " + object);
}
System.out.println("Method name : " + joinPoint.getSignature().getName());
log.info("beforeAdvicing...........****************...........");
log.info("Method name : " + joinPoint.getSignature().getName());
System.out.println("************************");
}
Mais certains de ce que je vois dans d'autres ressources ,
@Around("execution(* com.mumz.test.spring.aop.BookShelf.addBook(..))")
public void aroundAddAdvice(ProceedingJoinPoint pjp){
Object[] arguments = pjp.getArgs();
for (Object object : arguments) {
System.out.println("Book being added is : " + object);
}
try {
pjp.proceed();
} catch (Throwable e) {
e.printStackTrace();
}
}
Ici ce que le ProceedingJoinPoint
fera spécial comparer à " JointPoint` ?
Aussi ce pjp.proceed()
fera pour nous ?
OriginalL'auteur Human Being | 2013-04-03
Vous devez vous connecter pour publier un commentaire.
Cela signifie avant d'appeler
com.mumz.test.spring.aop.BookShelf.addBook
méthodearoundAddAdvice
méthode est appelée.Après
System.out.println("Book being added is : " + object);
opération est terminée . il va appeler votre méthodeaddBook()
.pjp.proceed()
appelleraaddBook()
méthode.pjp.proceed()
fera appel à laaddBook()
méthode deux fois ?Non, d'abord il va appeler aroundAddAdvice méthode.Puis il va appeler addBook().
Vous pouvez le voir par le débogage.
Quelle est donc la différence entre le
Joinpoint
etProceedingjoinpoint
?.Si vous utilisez avant de,après les de lancer,après le retour et après l'utilisation Jointpoint.Si vous utilisez autour de l'utilisation Proceedingjoinpoint .Ils sont juste de l'interface.Proceedingjoinpoint est l'extension de Jonction .Alors,voyant sa fonctionnalité, vous pouvez sélectionner comme par urs exigence pour l'utiliser.
OriginalL'auteur abishkar bhattarai
Un autour de conseil est un conseil spécifique qui permet de contrôler quand et si une méthode (ou d'autres adhérer à point) est exécutée. Cela est vrai pour autour de conseils seulement, de sorte qu'ils nécessitent un argument de type
ProceedingJoinPoint
, tandis que d'autres conseils utilise juste un simpleJoinPoint
. Un exemple de cas d'utilisation est de mettre en cache les valeurs de retour:Dans ce code (à l'aide d'un inexistante technologie de cache pour illustrer un point) la méthode n'est appelée que si le cache n'est pas de retourner un résultat. C'est la manière exacte dont les Printemps EHCache Annotations projet de travaux, par exemple.
Une autre spécialité, autour de conseils est qu'ils doivent avoir une valeur de retour, tandis que d'autres conseils que les types ne doivent pas en avoir un.
How to get the input parameters of a method and the return value of the same method using the @Around using the ProceedingJoinPoint ?
Voir mon code ci-dessus: les paramètres d'entrée peuvent être récupérées par le biais de
pjp.getArgs()
, la valeur de retour de méthode par le biais depjp.proceed()
Permet cliquez sur le lien pour chat chat.stackoverflow.com/rooms/27495/...
Je n'ai pas le temps de discuter ici. regardez mon profil et me contacter si skype ou fb chat
OriginalL'auteur Sean Patrick Floyd