spring ioc的代理是cglib还是jdk

来源:7-3 Advice扩展

无计留春住

2017-08-04 17:10

cglib,jdk

写回答 关注

2回答

  • qq_Hearingmywor_04183785
    2017-08-05 16:08:34
    已采纳

    1、若代理类无接口,则使用CGLIB代理,否则使用JDK代理。

    2、也可以通过设置proxyTargetClass为true,强制使用CGLIB代理。

    3、如果proxyInterfaces属性被设置为一个或者多个全限定接口名,则使用JDK代理;如果该属性没有被设置,但是目标类实现了接口,也使用JDK代理。

    无计留春住

    cglib代理代理字段属性吗

    2017-09-12 13:45:00

    共 1 条回复 >

  • 朽木911
    2017-08-05 15:55:32

    Java动态代理是利用反射机制生成一个实现代理接口的匿名类,在调用具体方法前调用InvokeHandler来处理。

    而cglib动态代理是利用asm开源包,对代理对象类的class文件加载进来,通过修改其字节码生成子类来处理。

    1、如果目标对象实现了接口,默认情况下会采用JDK的动态代理实现AOP 
    2、如果目标对象实现了接口,可以强制使用CGLIB实现AOP 

    3、如果目标对象没有实现了接口,必须采用CGLIB库,spring会自动在JDK动态代理和CGLIB之间转换


Spring入门篇

为您带来IOC和AOP的基本概念及用法,为后续高级课程学习打下基础

268802 学习 · 1016 问题

查看课程

相似问题