spring和aspectj,非代理对象的拦截方法

blo*_*low 3 java proxy spring aspectj

我想拦截来自非代理对象的方法.

我有一个类实例MyClass myClassInstance=new MyClass(),我想拦截myClassInstance方法的调用.

我知道所有代理工作都很好,但我需要非代理的方面.

这可能吗?

谢谢.

Boz*_*zho 5

这是可能的,但这是不可取的.

您可以使用@Configurable和AspectJ拦截调用.阅读7.8.1使用AspectJ依赖注入域对象与关于它的文档的Spring部分.

简而言之 - AspectJ插入一些"魔法"编译时或加载时(使用相应的编织器),它修改类以使它们成为弹簧上下文的一部分.

至于为什么我认为这是不可取的 - 这是通过修改类的结构而发生的黑暗魔法.这不是面向对象的方法,我认为很难支持.想象一下,6个月后,你的一位同事正在调试一个讨厌的问题.可能需要几天才能意识到这种魔法正在发生.这个意见虽然有所体现.功能就在那里,如果你需要它 - 使用它.