Подтвердить что ты не робот

Выражение AspectJ дает формальное несвязанное в pointcut ошибке

У меня в аспектеJ выражение:

@Pointcut("within(com.param.cpms.dao.impl.ProjectMetaDaoImpl)")
public void daoExceptionHandle() {

}

При запуске Spring 3.0 я получаю следующую ошибку :

nested exception is java.lang.IllegalArgumentException: error at ::0 formal unbound in pointcut
4b9b3361

Ответ 1

Вероятно, проблема не в вашем pointcut, а в совете с использованием этого pointcut и использовании параметра, которого нет в pointcut. Просто удалите параметр из совета (ну или добавьте его в pointcut).

Ответ 2

Пост довольно старый, но для полноты изложения я добавляю еще одну причину, если вы используете @Around advice.

Согласно документации Spring AspectJ, первым аргументом совета должен быть ProceedingJoinPoint. Если он отсутствует, вы получите именно это сообщение об исключении. К сожалению, исключение не указывает на совет по ошибке, поэтому устранение ошибки является ударом и промахом.

Ответ 3

Я получил эту ошибку из-за неправильного импорта класса. Я должен был импортировать класс org.aspectj.lang.JoinPoint импорта, но вместо этого импортировал другой класс Joinpoint из другого пакета.

Ответ 4

Это была Joinpoint (строчная буква p)

org.aopalliance.intercept.Joinpoint;

Изменить на JointPoint ("P прописными буквами)

org.aspectj.lang.JoinPoint; 

Ответ 5

У меня также была эта проблема, и в моем случае это был неправильный импорт из: org.aopalliance.intercept.Joinpoint;

Это должно быть: org.aspectj.lang.JoinPoint;

Ответ 6

Иногда причиной может быть это.

 public void afterReturning(JoinPoint joinPoint, Object result)

Просто удалите Object result как показано ниже, и он работает для меня.

public void afterReturning(JoinPoint joinPoint)

Ответ 7

Если вы используете конфигурацию на основе XML и если ваша конфигурация выглядит примерно так:

<aop:config>
<aop:aspect ref="bAdvice">
    <aop:pointcut id="displayPointcut" expression="execution(* com.example.demo.BusinessClass.display())"/>
    <aop:before method="before" pointcut-ref="displayPointcut" />
</aop:aspect>
</aop:config>

Затем в 2 сценариях вы получаете ошибку:

  1. Если в выражении pointcut, метод ie (в нашем случае display()) определен без каких-либо параметров, а в реальном методе класса есть некоторые параметры.
  2. Если в параметре before advice, т.е. Aop: before, method = "before", определены без аргументов и в классе фактического рекомендации, метод before имеет некоторые параметры.

В конечном итоге, когда параметры метода, определенные в XML, не соответствуют фактическому методу, возникает эта ошибка.

Ответ 8

Это не ваш ответ, но, возможно, это немного вам поможет.

Spring AOP Tutorial, вы можете сослаться на этот урок

@Before("execution(* com.de.controller..*(..))")
public void beforeLoggerAdvice(JoinPoint joinPoint, WebRequest request) {
    DeUtil.looger.info("--working");
}

Я получил то же исключение, но из-за WebRequest я удалил его и использовал альтернативу

HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes()).getRequest();

Ответ 9

Формальное исключение в исключении pointcut также происходит для двух резонов в AOP.

Причина 1: если после возврата совета нет заявления о возврате

Для реализации на основе XML

<aop:aspect id="myaspect" ref="trackAspect">
<aop:pointcut id="pointCutAfterReturning" expression="execution(* com.springlearn.Operation.*(..))" />
<aop:after-returning method="myAdvice"  returning="result" pointcut-ref="pointCutAfterReturning"/>  //Make sure returning result is added
</aop:aspect>

Для реализации на основе аннотации

@AfterReturning(  
              pointcut = "execution(* Operation.*(..))",  
              returning= "result") //Make sure returning result is added

Причина 2: если нет броска после броска

Для реализации на основе XML

<aop:aspect id="myaspect" ref="trackAspect" >  
     <!-- @AfterThrowing -->  
     <aop:pointcut id="pointCutAfterThrowing"    expression="execution(* com.javatpoint.Operation.*(..))" />  
     <aop:after-throwing method="myadvice" throwing="error" pointcut-ref="pointCutAfterThrowing" />  //Make sure throwing error is added
  </aop:aspect> 

Для реализации на основе аннотаций

@AfterThrowing(  
              pointcut = "execution(* Operation.*(..))",  
              throwing= "error")  //Make sure throwing error is added

Ответ 10

Я получаю ту же ошибку, в моем сценарии я использовал два параметра метода

public void methodName(JoinPoint joinPoint ,HttpServletRequest request) throws

и моя аннотация была как

@Before("execution(public * com.java.controller.*Controller.*(..))")

В качестве решения я добавил

арг (запрос,..)

@Before("execution(public * com.java.controller.*Controller.*(..)) && args(request,..)")

Ответ 11

проблема есть Когда вы написали свой совет с "Joinpoint", пожалуйста, убедитесь, что он