Spring IoC底层实现原理,在SpringBoot中好像都是使用CGLib,这是什么情况???

Spring IoC底层实现原理,在SpringBoot中好像都是使用CGLib,这是什么情况???

Spring IoC底层实现原理,分为2种情况

1、实现接口,Spring底层优先使用JDK动态代理的方式为目标类自动生成代理,从而实现功能扩展

2、没有实现接口,则自动使用CGLib的方式,通过继承的方法,从而对目标类的进行扩展

代码如下:

package com.imooc.mall.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * 配置地址映射
 */
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        /*registry.addResourceHandler("/admin/**").addResourceLocations("classpath:/static/admin/");
        registry.addResourceHandler("/images/**").addResourceLocations("file:" + Constant.FILE_UPLOAD_DIR);*/
        registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
        registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
    }
}

结果输出:

2020-08-17 14:10:51 JRebel: Reloading class 'com.imooc.mall.controller.CategoryController'.
2020-08-17 14:10:51 JRebel: Reinitialized class 'com.imooc.mall.controller.CategoryController$$EnhancerBySpringCGLIB$$1'.
2020-08-17 14:12:33 JRebel: Reloading class 'com.imooc.mall.config.WebMvcConfig'.
2020-08-17 14:12:33 JRebel: Reinitialized class 'com.imooc.mall.config.WebMvcConfig$$EnhancerBySpringCGLIB$$1'.


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕阿莹 2020-08-17 15:08:25

同学你好,

springboot团队使用的默认的代理模式设置成cglib代理,

官方解释如下:

This was changed in 1.4 (see 5423). We’ve generally found cglib proxies less likely to cause unexpected cast exceptions.

他们认为使用cglib更不容易出现转换错误。

同学这里当做了解就好。

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • 提问者 DaVinciYangWang #1
    何为转换错误,jdk动态代理为什么会出现转换错误,cglib为什么不会出现转换错误,还请详释
    2020-08-18 06:10:17
  • 好帮手慕阿莹 回复 提问者 DaVinciYangWang #2
    同学你好,这些是SpringBoot团队的观点,具体他们可能是经过了大量的实验,由于比较底层,老师也不能完全准确的掌握底层原理,同学如果有兴趣,可以找在官网查找一些英文文献进行学习一下。为此感到很抱歉。祝学习愉快。
    2020-08-18 10:02:41
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师