Bonsoir,
Objis a écrit un nouvel article sur AspectJ : Création d'un aspect de Log AspectJ
N'hésitez pas à commenter
Bonne soirée
Bonsoir,
Objis a écrit un nouvel article sur AspectJ : Création d'un aspect de Log AspectJ
N'hésitez pas à commenter
Bonne soirée
Comment fait-on dans NetBeans ?
- création de LogAspect.aj avec reconnaissance de la syntaxe par NB.
- compilation avec ajc (en principe une tâche ant)
AspectJ semble séduisant, mais si c'est trop lourd à inclure dans un IDE,
je ne pourrai pas l'utiliser
Bonjour Népomucène,
Un plugin aspectJ existait pour Netbeans 3.5.x : http://aspectj-netbeans.sourceforge.net/ , mais pas de suivi semble t'il.
La video suivante fait une démo de création d'aspects et tissage avec AspectJ dans Netbeans : [ame="http://www.youtube.com/watch?v=7Ak3hOk95PY"]YouTube- AspectJ On Netbeans[/ame]
Un projet de plugin AspectJ pour Netbeans 6.x semble avoir démarré http://projectkenai.com/projects/nbaspectj mais rien de produit.
La recommandation est de passer par ANT.
Bonjour ,
j ai un petit problème avec aspectj dont je vais le simplifier par un
exemple affin de rendre les chose plus claire
j ai 2 class une abstract et l autre une class qui hérite de cet
abstract class une methode non abstraite
public abstract class AbstractService<blabla>{
public void method1(..){
.......}
abstract method2(..);
}
public class MyClass extends AbstractService{
public void method2(){}
}
public class Test(){
public static void main(..){
MyClass myclass= new MyClass ();
myclass.method1(..);
}
}
l objectif c est d intercepter l exécution de la "method1" sauf que
aspectj me dit qu il l a intercepter au niveau
AbstractService.method1() alors que l instance qui a fait appel a
cette method1 c est myclass et c est pas ça que je voulais . ma
question est : y a t il un moyen pour que je puisse intercepter l
exécution de la method1 qui n est pas redéfini dans MyClass mais qui
est invoqué par cette dernière c.a.d que le résultat soit
"myclass.method1()" au lieu de "AbstractService.method1() ".
Merci d avance.
Il y a une (très) légère erreur dans le tutoriel.
Le pointcut écrit dans le paragraphe 7 ("pointcut logRetrait() : execution(* com.objis.demoaspectj.banque.CompteBancaire.retrait(..));") ne correspond pas au code écrit précédemment dans le paragraphe 6.
Il faudrait utiliser un pointcut "call" au lieu de "execution"
La différence (subtile) est que dans le cas du "call" le code est ajouté dans la méthode appelant la méthode correspondante au joinpoint. Alors que dans le cas du pointcut "execution" le code est ajouté dans la méthode du joinpoint.
Cela peut entraîner des comportement légèrement différent. Le tissage n'étant pas réalisé de la même facon, il est possible avec le pointcut "call" que tout les appels ne soit pas tracé. De plus, les performance ne sont pas complètement identique (par exemple, les optimisation et la compilation JIT ne seront pas faite de la même manière dans les 2 cas)
@yosri32
Ta méthode sera quand même intercepté. Quel est le problème ?
Peux tu nous montrer l'aspect qui est utilisé ?
PS: Ce serait plus agréable pour la lecture si le code était correctement formaté à l'aide des balise qui vont bien.
PPS: Est ce que la touche apostrophe est en panne ?
ma class AbstractService
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 public abstract class AbstractService<blabla>{ public void method1(..){ // il y a du code } abstract void method2(); }MyClass qui herite de AbstractService et qui ne redéfinie pas method1
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 public class MyClass extends AbstractService<..>{ public void method2(){ //implemented method } }ma class de test qui fait appel a la method1 avec une instance de MyClass
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 public class Test(){ public static void main(..){ MyClass myclass= new MyClass (); myclass.method1(..); } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part pointcut = execution(void MyClass.method1(..))mon objectif c'est d'intercepter l'exécution de la "method1" sauf que
aspectj me dit qu il l a intercepter au niveau
AbstractService.method1() alors que l'instance qui a fait appel a
cette method1 c'est myclass et c'est pas ça que je voulais . ma
question est : y a t il un moyen pour que je puisse intercepter l'exécution de la method1 qui n est pas redéfini dans MyClass mais qui
est invoqué par cette dernière c.a.d que le résultat soit
"myclass.method1()" au lieu de "AbstractService.method1() ".
Merci d avance.
Excellent tutoriel pour aborder AspectJ: bien mieux écrit que le tutoriel présent sur le site AspectJ il permet de comprend immédiatemment l'interêt de l'outil.
Merci de l'avoir "porté" sur developpez.
BON SOIR
j'ai une application JEE " web annonce" et j'inserer une aspect de loggin
mais j'ai un problem au niveua de TOMCAT lors d'execution
svp qui me peut donner une idee.merci
Bonjour,
J aurais voulu savoir si c était possible de créer son projet aspectJ sur un projet maven dans eclipse et de l utiliser après sur d autre projet lors de leur exécution ? et si oui comment faut il faire ?
Par exemple sur ce cas d exemple avoir un projet 1 qui contient le projet bancaire. et avoir un projet 2 qui contient les classes aspect.
(point bonus, mon projet 1 est sous RCP) à dispo si besoin de plus de details.
Merci pour votre aide
bonne soiree
Partager