java.lang.IllegalArgumentException: ошибка в формальной несвязанной :: 0 в pointcut - PullRequest
10 голосов
/ 22 ноября 2011

Thinker.java

package springdemo2;

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

Volunteer.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();
}

Magician.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)

Я включил <aop:aspectj-autoproxy/> в мой XMLфайл.

Я получил следующее сообщение об ошибке

 java.lang.IllegalArgumentException: error at ::0 formal unbound in
 pointcut

Ответы [ 4 ]

13 голосов
/ 16 декабря 2011
@Pointcut("execution(* springdemo2."
    + "Thinker.thinkOfSomething(String)) and args(thoughts)")

должно быть

@Pointcut("execution(* springdemo2."
    + "Thinker.thinkOfSomething()) && args(thoughts)")
1 голос
/ 28 ноября 2012
@Before("thinking(thoughts)")

должно быть

@Before("thinking(String) && args(thoughts)")
0 голосов
/ 10 января 2018

Однако, если параметры каждого метода не совпадают, как это сделать?

Я вам скажу:

Spring использует аннотацию Annotation с использованием объявления интерфейса Joinpoint в aopalliance.jar: org.aopalliance.intercept.Joinpoint.

Используется конфигурация xmlспособ.

0 голосов
/ 10 января 2014

Всякий раз, когда java.lang.IllegalArgumentException: error at ::0 происходит формальное несвязывание в pointcut, как проблема, просим проверить структуру вашего совета, иначе выражение pointcut в максимальных случаях будет само по себе.

...