我想拦截来自非代理对象的方法.
我有一个类实例MyClass myClassInstance = new MyClass(),我想拦截myClassInstance方法的调用.
我知道所有代理工作都很好,但我需要非代理的方面.
这可能吗?
谢谢.
解决方法:
这是可能的,但这是不可取的.
您可以使用@Configurable和AspectJ来拦截调用.阅读the 7.8.1 Using AspectJ to dependency inject domain objects with Spring section of the docs.
简而言之 – AspectJ插入一些“魔法”编译时或加载时(使用相应的编织器),它修改类以使它们成为弹簧上下文的一部分.
至于为什么我认为这是不可取的 – 这是通过修改类的结构而发生的黑暗魔法.这不是面向对象的方法,我认为很难支持.想象一下,6个月后,你的一位同事正在调试一个讨厌的问题.可能需要几天才能意识到这种魔法正在发生.这个意见虽然有所体现.功能就在那里,如果你需要它 – 使用它.