Java.lang.IllegalArgumentException: erreur:0 formel indépendant en coupe transverse (pointcut)

Penseur.java

package springdemo2;

public interface Thinker {
    void thinkOfSomething(String thoughts); 
}

des Bénévoles.java

package springdemo2;

public class Volunteer implements Thinker{
    private String thoughts;

    @Override
    public void thinkOfSomething(String thoughts) {
        this.thoughts=thoughts;
    }

    public String getThoughts(){
        return thoughts;
    }
}

MindReader.java

package springdemo2;

public interface MindReader {
    void interceptThoughts(String thoughts);

    String getThoughts();
}

Magicien.java

package springdemo2;

import org.aspectj.lang.annotation.Aspect; 
import org.aspectj.lang.annotation.Before; 
import org.aspectj.lang.annotation.Pointcut;

@Aspect 
public class Magician implements MindReader {

    private String thoughts;

    @Pointcut("execution(* springdemo2."
            + "Thinker.thinkOfSomething(String)) and args(thoughts)")
    public void thinking(String thoughts){
    }

    @Override
    @Before("thinking(thoughts)")
    public void interceptThoughts(String thoughts) {
        this.thoughts=thoughts;
        System.out.println("Advice method intercepted Thoughts..."+thoughts);
    }

    @Override
    public String getThoughts() {
        return thoughts;
    }
}

XML (Spring)

j'ai inclus <aop:aspectj-autoproxy/> dans mon fichier XML.

j'ai reçu le Message D'erreur suivant

 java.lang.IllegalArgumentException: error at ::0 formal unbound in
 pointcut
10
demandé sur cb4 2011-11-22 23:07:07

4 réponses

@Pointcut("execution(* springdemo2."
    + "Thinker.thinkOfSomething(String)) and args(thoughts)")

doit être

@Pointcut("execution(* springdemo2."
    + "Thinker.thinkOfSomething()) && args(thoughts)")
13
répondu Jeshurun 2011-12-16 04:07:19
@Before("thinking(thoughts)")

doit être

@Before("thinking(String) && args(thoughts)")
1
répondu Sllouyssgort 2012-11-27 20:53:14

Toutefois, si les paramètres de chaque méthode ne sont pas les mêmes, comment faire?

je vais vous dire:

Spring utilise L'annotation annotation en utilisant la déclaration D'interface Joinpoint dans aopalliance.jar: org.aopalliance.intercepter.De jonction.

la configuration xml est utilisée Joinjoint.pot de Joindre à la déclaration:org.aspectj.lang.De jonction.

ainsi, vous devriez utiliser le JoinPoint d'aspectj dans la méthode.

0
répondu zui-coding 2018-01-10 11:47:03

Quand java.lang.IllegalArgumentException:error at ::0 formel indépendant en coupe transverse (pointcut) comme le problème se produit-il alors de bien vouloir vérifier la structure de votre avis, ou l'expression d'une coupe transverse (pointcut) dans un maximum de cas, l'erreur sera là lui-même.

-4
répondu user3110162 2014-01-10 06:36:15