日期:2014-05-19  浏览次数:20713 次

spring源码,不明白什么时候用cglib实例化类
最近看spring代码在判断是否用cglib实例化类时有这样一个判断
if (beanDefinition.getMethodOverrides().isEmpty()) {
何解?不是用jdk反射时都要实现接口的吗?
最好举个例子什么时候用cglib

------解决方案--------------------
当发现容器配置的bean是没有定义接口时,这时aop就会用到cglib。
hibernate里面的延迟加载,就是用到cglib.因为一般一个bean.load(),bean是不会定义接口的。
------解决方案--------------------
LZ:
这个类的中的方法都需要我们去处理,通过AOP等一些技术。
1.这个类中的待处理的方法,都在接口中,那么spring会去使用JDK的代理
2.如果这个类中的所有方法都需要处理,但是它又没有接口,那么spring会使用cglib去代理