[英]Spring AOP Autowiring exception
我在項目中使用AspectJ。
@Aspect
Class FooAsspectj{
private static Logger log = LoggerFactory.getLogger(FooAsspectj.class);
@Pointcut("execution(* com.abc.Foo.getFoo(..))")
public void getFoo() { }
@Around("getFoo()")
public Object profileFoo(ProceedingJoinPoint pjp) throws Throwable {
long start = System.currentTimeMillis();
log.debug("Going to call the method.");
Object output = pjp.proceed();
log.debug("Method execution completed.");
long elapsedTime = System.currentTimeMillis() - start;
log.debug("Method execution time: " + elapsedTime + " milliseconds.");
return output;
}
}
Class Foo{
public void getFoo(String abc){
System.out.println("Hello Foo");
}
現在我有另一個類UseFoo,在其中自動裝配Foo類
Class UseFoo{
@Autowired
private Foo foo;
}
我在ApplicationContext.xml中輸入了以下內容
<aop:aspectj-autoproxy />
<bean id="fooaspect" class="FooAsspectj" />
我出錯了
由以下原因引起:org.springframework.beans.factory.BeanCreationException:創建名稱為'useFoo'的bean時出錯:自動連接依賴項的注入失敗; 嵌套的異常是org.springframework.beans.factory.BeanCreationException:無法自動連線字段:private Foo UseFoo.foo; 嵌套的異常是java.lang.IllegalArgumentException:無法將Foo字段UseFoo.foo設置為$ Proxy56
如果我刪除<bean id="fooaspect" class="FooAsspectj" />
它將正常工作。
這可以通過使用以下方法解決
<aop:aspectj-autoproxy proxy-target-class="true"/>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.