Spring AOP Autowiring异常

时间:2012-11-30 09:52:14

标签: java spring spring-aop autowired

我在项目中使用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:不能   autowire字段:私人Foo   UseFoo.foo;   嵌套异常是java.lang.IllegalArgumentException:无法设置   Foo场   UseFoo.foo来   $ Proxy56

如果我删除<bean id="fooaspect" class="FooAsspectj" />,则可以正常使用。

1 个答案:

答案 0 :(得分:4)

使用以下

解决了这个问题
 <aop:aspectj-autoproxy proxy-target-class="true"/>