请教大手:AOP中不能拦截什么方法
小弟比较疑惑,面试题
------解决方案-------------------- final
如果是类的方法被标明是final的,则子类无法覆盖。aop在对class拦截的时候,实质上是生成一个代理类,也是被拦截的类的子类。所以如果方法被标明final就无法拦截了
------解决方案-------------------- 探讨 final 如果是类的方法被标明是final的,则子类无法覆盖。aop在对class拦截的时候,实质上是生成一个代理类,也是被拦截的类的子类。所以如果方法被标明final就无法拦截了
------解决方案-------------------- 确切的说应该是如果一个类既没有实现接口,又被声明为final,那么它的方法是不会被spring拦截的。
没有实现接口,JDK动态代理不能使用。
被声明为final,CGLIB不能使用。(当然如果一个类不声明为final,可方法设置为final,同样此方法不能被拦截)
应该是这样,就是不知spring是否还可以使用别的代理方式。
------解决方案--------------------
呵呵,偶也一起说说,其实准确说final似乎并不能算,因为jdk动态代理可以去实现他,当然面试时候你这么说,估计也可以过;
不过构造方法的确是不能被拦截的,这是某知道
------解决方案-------------------- 那总结下 楼上的回答,不能被overidder的方法不能被拦截.呵呵