如何知道接口是否调用了

因为接口已经是写好的,用观察模式好像有点把接口给污染耦合了,有人给个招不。
另外有一问题:用aop拦截器出现这个问题
接口文件中有两个方法 A(); B();
如果在return之前拦截B(),能够成功,但如果是在A()的实现类中调用B(),则拦截不到了,就是不能在嵌套拦截。
A(){
B(); //这样调用拦截不到B();
}
有没有人想个办法,我想知道B()是否调用了,因为我要做个一旦被调用了就去执行某个操作。

那个B方法调用了、
但是你只能拦截[u]代理类的A方法[/u]和[u]代理类的B方法[/u]

你说的是你拦截了[u]代理类的A方法[/u],[b]然后[u]代理类的A方法[/u]调用[u]原始类的A方法[/u],接下来[u]原始类的A方法[/u]再调用[u]原始类的B方法[/u] [/b],

后面说起来比较饶舌,黑体字它们是作为一个整体操作在代理类的A方法中存在的。

代理原理就是这样的,至于如何让拦截器知道原始类的B方法被调用,自己想想办法吧。实在不行你继续追问,

因为你的B方法是在A方法中调用的,而不是通过spring管理bean中调用的,所以拦截器没有起作用。

楼主可以试试,A方法的拦截器起作用了,因为A方法一起是spring的bean直接调用的。如果说你在别的方法里调用A方法,那拦截器也不会起作用。

这个问题我以前也是在一个项目中发现事务没有起作用才发现的,希望对你有帮助。

用log4j啊

想想是不是设计上出了问题,aop是外面调用,所以需要通过几个切面,而你的情况是里面调用。尝试改下设计