我有内AspectJ的表达式:
@Pointcut("within(com.param.cpms.dao.impl.ProjectMetaDaoImpl)")
public void daoExceptionHandle() {
}
在春季3.0启动时,我收到以下错误:
nested exception is java.lang.IllegalArgumentException: error at ::0 formal unbound in pointcut
我有内AspectJ的表达式:
@Pointcut("within(com.param.cpms.dao.impl.ProjectMetaDaoImpl)")
public void daoExceptionHandle() {
}
在春季3.0启动时,我收到以下错误:
nested exception is java.lang.IllegalArgumentException: error at ::0 formal unbound in pointcut
也许这个问题是不是在你的切入点,但在建议使用切入点和使用不中的切入点存在的参数。 单从建议删除参数(井,或者将其添加到切入点)。
该职位是比较老了,但为了完整起见,我加入了另外一个原因,如果你使用@Around建议。
根据春天的AspectJ文件建议的第一个参数必须是ProceedingJoinPoint。 如果它丢失,您将获得正是这种异常消息。 可悲的是,除了没有指向建议在错误以解决这个bug是一个打了小姐。
我因为类的错误进口的这个错误。 我应该进口进口一个org.aspectj.lang.JoinPoint类,而是进口了一些其他的连接点类从不同的包。
它是连接点(“P小写)
org.aopalliance.intercept.Joinpoint;
更改为JointPoint(“P大写)
org.aspectj.lang.JoinPoint;
我也有这个问题,在我的情况下,它是从一个错误的导入: org.aopalliance.intercept.Joinpoint;
它需要: org.aspectj.lang.JoinPoint;
有时,原因可能是这一点。
public void afterReturning(JoinPoint joinPoint, Object result)
只是删除Object result
如下,它为我工作。
public void afterReturning(JoinPoint joinPoint)
如果您使用的是基于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种情况,你所得到的错误:
最终,当XML不匹配的实际方法定义的方法的参数,那么这个错误会来的。
这不回答,但可能它会帮助你一点点。
Spring AOP的教程 ,你可以参考本教程
@Before("execution(* com.de.controller..*(..))")
public void beforeLoggerAdvice(JoinPoint joinPoint, WebRequest request) {
DeUtil.looger.info("--working");
}
我得到了同样的异常,但因为的WebRequest的,我删除和使用可替代
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes()).getRequest();
在切入点例外正式绑定也发生在AOP 2个resons。
原因1:如果没有return语句返回中的意见后,
对于基于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
我得到了同样的错误,在我的方案,我用两个方法参数
public void methodName(JoinPoint joinPoint ,HttpServletRequest request) throws
我的注释很喜欢
@Before("execution(public * com.java.controller.*Controller.*(..))")
作为解决方案我已经加入
ARGS(请求,..)
@Before("execution(public * com.java.controller.*Controller.*(..)) && args(request,..)")