无法访问 Spring AOP 中的代理对象
Unable to access proxy object in Spring AOP
这个问题可能有点简单,但我就是找不到解决方案。
我正在使用 Spring AOP,目前我只是想获取对框架本身创建的代理对象的引用。
我按照 this 线程提供的说明进行操作,但我仍然遇到以下异常:
线程 "main" java.lang.IllegalStateException 中出现异常:找不到当前代理:将 'exposeProxy' 属性 设置为 'true' 以使其可用。
这是我的 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 class 中的方法:
public void play() {
AopContext.currentProxy();
System.out.println("Actor starts playing his role...");
}
方面被编织并正确调用。
非常感谢!
最后我自己找到了错误。上面的代码工作正常。然而,将编译器从 ajc 换成 javac,我认识到代理展示只能使用 javac 而不是 AspectJ 编译器进行编译。我希望这对你们中的一些人有帮助!
这个问题可能有点简单,但我就是找不到解决方案。 我正在使用 Spring AOP,目前我只是想获取对框架本身创建的代理对象的引用。 我按照 this 线程提供的说明进行操作,但我仍然遇到以下异常:
线程 "main" java.lang.IllegalStateException 中出现异常:找不到当前代理:将 'exposeProxy' 属性 设置为 'true' 以使其可用。
这是我的 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 class 中的方法:
public void play() {
AopContext.currentProxy();
System.out.println("Actor starts playing his role...");
}
方面被编织并正确调用。
非常感谢!
最后我自己找到了错误。上面的代码工作正常。然而,将编译器从 ajc 换成 javac,我认识到代理展示只能使用 javac 而不是 AspectJ 编译器进行编译。我希望这对你们中的一些人有帮助!