我在webapp启动时收到此错误
引起:org.springframework.beans.factory.BeanCreationException:创建名为'org.springframework.aop.aspectj.AspectJPointcutAdvisor#0'的bean时出错:bean的实例化失败;嵌套异常是org.springframework.beans.BeanInstantiationException:无法实例化bean类[org.springframework.aop.aspectj.AspectJPointcutAdvisor]:构造函数抛出异常;嵌套异常是java.lang.IllegalArgumentException:错误在:: 0正式未绑定的切入点
这是xml的一部分,在底部显示我的切入点
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
.....省略的事情
<aop:config>
<aop:aspect id="bamAspectAroundID" ref="bamAspectAround">
<aop:pointcut id="bamAroundMethodPointcut" expression="execution(* testBA*(..))" />
<aop:around method="aspectAroundMethod" pointcut-ref="bamAroundMethodPointcut"/>
</aop:aspect>
</aop:config>
在我的一个课程中,我有一个虚拟方法
public void testBAM() {
System.out.println("in testBAM() ");
}
表达似乎对我好。任何指针?我们正在使用aspectj 1.6.2。感谢。
答案 0 :(得分:0)
我可以确认您的AspectJ表达式没问题。我使用你在上面提供的内容做了一个测试版本并且它有效。
我没有在Web容器中这样做 - 我使用AspectJ工具1.6.6和AspectJ weaver 1.6.8和Spring 3.1库在Eclipse中作为独立的Spring应用程序执行它,所以稍微超出了您的设置版本
这就是我的工作:
我的类路径中与方面相关的jar文件是:
我的xml配置的AOP部分看起来与你的完全一样 - 没有变化。
我将以下bean定义添加到相同的spring xml配置文件中:
<bean id="aspectTarget" class="foo.bam.Target" />
<bean id="bamAspectAround" class="foo.bam.BamAspectAround" />
Target类具有testBAM()
方法。
BamAspectAround的代码如下所示:
public class BamAspectAround {
public void aspectAroundMethod(ProceedingJoinPoint joinPoint) throws Throwable {
System.out.println(">>> BamAspectAround Before");
joinPoint.proceed();
System.out.println("<<< BamAspectAround After");
}
}
主要方法有:
Target t = (Target)ctx.getBean("aspectTarget");
t.testBAM();
它打印出我的预期:
>>> BamAspectAround Before
in testBAM()
<<< BamAspectAround After
注意:我还下载了AspectJ 1.6.2并将其weaver jar及其工具jar放入我的classpath(删除了1.6.8)并且上面也有效,所以也许试试这个简单您的设置示例,并查看您在Web部署版本中缺少的内容。