无法访问Spring AOP中的代理对象

时间:2015-04-01 21:34:59

标签: spring spring-aop

这个问题可能很简单,但我无法找到解决方案。 我使用Spring AOP,目前我只是尝试获取对框架本身创建的代理对象的引用。 我按照this主题提供的说明进行操作,但我仍然遇到以下异常:

线程中的异常" main" java.lang.IllegalStateException:找不到当前代理:Set' exposeProxy'建议真实'使其可用。

这是我的springContext.xml中的必填项:

 <aop:aspectj-autoproxy expose-proxy="true"/>

这是我的方面定义:

@Aspect
public class DynamicAspect {


@Pointcut("execution(* addition.aop.Actor.play(..))")
public void play() {

}

@Before("play()")
public void directorGivesInstructions() {
    System.out.println("Director: Light, camera, action!");
}

测试所有内容的主要方法:

public static void main(String[] args) {    
 ApplicationContext context = new ClassPathXmlApplicationContext(...);
 Actor actor = (Actor) context.getBean("actor");
 actor.play();
}

这是Actor类中引发异常的方法:

 public void play() {
    AopContext.currentProxy();
    System.out.println("Actor starts playing his role...");
}

方面被编织并正确调用。

非常感谢!

1 个答案:

答案 0 :(得分:0)

最后我发现了自己的错误。上面的代码工作正常。但是,将编译器从ajc交换到javac,我发现代理公开只能使用javac而不是AspectJ编译器进行编译。我希望将来能帮助你们中的一些人!