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 :

HelloWorld avec Spring AOP


Sujet :

Spring Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 10
    Par défaut HelloWorld avec Spring AOP
    Bonjour à tous,
    Je voudrais vous demander si quelqu'un s'y connais un peu en Spring AOP.
    En gros, je suis en train d'essayer de faire tourner un exemple HelloWorld avec SpringAOP.
    Pour cela j'ai dans l’arborescence suivante : src/pack ma classe de main (Hello) et ma classe d'aspects(MonBefore). Dans un META-INF repertoire, j'ai mis mon fichier springconfig.xml. Et puis sur la racine du projet, un build ant.
    En fait en lancant le build, il ne trouve pas ma classe de main:
    Could not find Hello. Make sure you have it in your classpath

    Je ne sais pas exactement d'où ca vient parce que je suis pas une habituée des build.xml!

    Mon fichier de build:

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     
    <?xml version="1.0"?>
    <project name="SpringExample" default="run" basedir=".">
     
    <!--Edit properties in build.properties before running ant-->
     
    <property file="build.properties"/>
     
    <path id="all-libs">
     
    <fileset dir="${springframework.dir}/lib">
    <include name="**/*.jar"/>
    </fileset>
    <fileset dir="${springframework.dir}/dist">
    <include name="*.jar"/>
    </fileset>
    <fileset dir="${xerces.dir}">
    <include name="*.jar"/>
    </fileset>
     
    </path>
     
    <target name="clean">
    <delete dir="classes"/>
    <delete file="springconfig.xml"/>
    </target>
     
    <target name="build" >
     
    <mkdir dir="classes"/>
     
    <javac destdir="classes"
    deprecation="false" optimize="false" failonerror="true">
    <src path="${src.dir}"/>
    <classpath refid="all-libs"/>
    </javac>
     
    <copy todir=".">
    <fileset dir="${src.dir}">
    <include name="springconfig.xml"/>
    </fileset>
    </copy>
    </target>
     
    <target name="run" depends="build">
    <java classname="Hello">
    <classpath>
    <pathelement path="classes"/>
    <pathelement path=".src.pack"/>
    <path refid="all-libs"/>
    </classpath>
    </java>
    </target>
    </project>
    Est ce qqun pourrait m'orienter vers l'issue? Merci d'avance

  2. #2
    Membre chevronné
    Inscrit en
    Août 2005
    Messages
    352
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 352
    Par défaut
    Il ne te manquerais pas un package avant ta classe ?

    Sinon, mon conseil si tu n'es pas encore une experte en ant : regarde maven 2

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 10
    Par défaut
    Au fait, j'ai essayé de rajouter le nom dupackage mais ce la ne marche toujrous pas! J'ai mm mis le chemin absolu vers le repértoire source!

    Par contre, j'ai trouvé une autre solution pour executer l'appli pour ceux k cela intersserait: C'est de rajouter dans le main ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ApplicationContext ctx = new FileSystemXmlApplicationContext("Springconfig.xml");
    Hello h = (Hello) ctx.getBean("Hellobean");
    Et faut rajouter le jar: cglib.jar de Spring pour des histoires de proxy. Et ça marche!
    Si qqun a des idées pour l'autre méthode, elles sont tjrs les bienvenues

  4. #4
    Membre chevronné
    Inscrit en
    Août 2005
    Messages
    352
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 352
    Par défaut
    Donc le probleme ne vient pas du build mais de ton code ? Je ne comprends pas bien ce que tu dis, ce n'est pas très clair.
    Un FileSystemXmlApplicationContext est une solution, je préfére généralement un ClassPathXmlApplicationContext (ca sous-entend que le fichier xml est dans le classpath).

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Février 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 10
    Par défaut
    Le problème ne vient probablement pas de mon code! c'est surment une balise du build qui n'est pas bonne!

    La deuxième solution que j'ai suggéré n'utilise pas de build. La class emain délègue la gestion du bean au framework spring lui mm!
    J'ai testé le ClassPathXmlApplicationContext et ca marche aussi, en effet.

  6. #6
    Membre chevronné
    Inscrit en
    Août 2005
    Messages
    352
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 352
    Par défaut
    Désolé, je comprends pas ce que tu dis, il doit manquer un truc pour faire le lien. Un bout de code peut etre ? Elle est ou ta méthode main par exemple ?

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Février 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 10
    Par défaut
    Pour résumer la situation:
    Dans src/packj'ai:
    -ma classe Hello qui contient deux méthodes bidon qui font des println et un main
    -une classe MonBefore qui contient l'advice Before pour les aspects.

    Dans META_INF:
    J'ai le fichier de configuraiton springconfig.xml

    Sur la racine du projet:
    build.xml

    1ere solution pr éxecuter mon aspect(effectuer le tissage de MonBefore sur les deux méthode de Hello):

    -build.xml: C'est dans ce fichier que je suis sensée appeler mon springconfig.xml pour le tissage d'aspect.
    Quand je lance mon build dont le code est ci-dessus, il ne trouve pas ma classe Hello! J'ai rajouté le nom du pacakge, et le chemin absolu de la classe sans résultat! Donc, je me demandais si mon build était correct!

    2eme solution pour exécuter l'aspect:
    N'utilise pas le build.xml! Il suffit de rajouter le bout de code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ApplicationContext ctx = new ClassPathXmlApplicationContext("Springconfig.xml");
    Hello h = (Hello) ctx.getBean("Hellobean");
    h.methd();
    à mon main.
    Ainsi le springconfig est pris en compte et le tissage a réelement lieu.

    J'espère que j'ai été assez claire.

  8. #8
    Membre chevronné
    Inscrit en
    Août 2005
    Messages
    352
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 352
    Par défaut
    Je comprends pas la différence entre les 2 solutions :

    solution 1 : tu appelles la méthode main de Hello depuis build.xml
    solution 2 : tu appelles la méthode main de Hello depuis ton IDE

    C'est bien ca ? Pourquoi parles tu de rajouter ce code uniquement dans le cas 2 ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ApplicationContext ctx = new ClassPathXmlApplicationContext("Springconfig.xml");
    Hello h = (Hello) ctx.getBean("Hellobean");
    h.methd();
    Il doit apparaitre dans les 2 cas, sinon tu ne peux pas charger d'applicationContext et utiliser ton Advice...

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Février 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 10
    Par défaut
    Tu as surement raison! Dans les deux cas, il faudra utiliser le ClassPathXmlApplicationContext!
    Mais c'est vrai que je n'ai pas pu verifier avec le build puisque j'arrive pas trop à voir ce qui y manque!

Discussions similaires

  1. Android + AOP avec Spring
    Par ammoula88 dans le forum Android
    Réponses: 0
    Dernier message: 24/03/2012, 21h37
  2. [Framework] Problème avec Spring AOP
    Par yashiro dans le forum Spring
    Réponses: 1
    Dernier message: 09/06/2009, 17h12
  3. [Framework] Spring AOP avec @AspectJ
    Par zooba dans le forum Spring
    Réponses: 1
    Dernier message: 27/03/2008, 17h06
  4. Réponses: 2
    Dernier message: 09/01/2008, 11h18
  5. Réponses: 5
    Dernier message: 12/05/2006, 22h02

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