专栏首页微光点亮星辰springIOC源码分析

springIOC源码分析

之前的javaweb基础分享的差不多了。最近研究了一下spring,分享给大家!

学好spring 是有必要的 有人说spring就是javaee,javaee就是spring 。说对也对,说不对也不对。 当然本质肯定是不对了。 那为什么说对呢。 可能是他的强大。他能把其他的框架都能友好的整合在他的怀抱里,而且整合的规定都是一致的,做到这点很v587

spring的核心在于ioc和aop ioc 与aop ioc 其实没什么说的 核心思想是控制反转,更能体现的词是依赖注入。需要什么类,我们就注入什么类到Ioc容器。最强大的刚才已经说了,他能注入很多框架,比如orm框架的 hibernate,mybatis等等。也能整合mvc的框架,比如struts2 springmvc等等。方式都一样。ioc的原理应该是好好研究一番的。用起来很简单,但是底层挺复杂的,我也只是研究过了一点。可以想一下xml注入的方式。为什么是全类名,为什么用id标识 源码。其实IOC容器就是一个CurrentHashMap,也就是个一键值对的map,键是String类型的,存放的是id标识。值是Object,存放的是通过反射获得的对象。(CurrentHashMap了解的不多,底层就是一个数组,数组中存放的都是链表,而链表实现就是类自身通过next的关联,至于为什么是用CurrentHashMap,考虑到并发时线程安全和效率,它强于hashTable和锁的包装)。ioc容器初始化时,会加载很多非注入bean的操作,比如beanfactory的创建,日志同步,转化器,监听器等等,源码最终可定位到AbstractApplicationContext。

如下

该refresh方法是springioc容器的核心处

这些是refresh方法里的一些方法,做一下初始化的操作,刚才也说了 日志时间的同步。转化器等

然后到下面这个方法 。初始化ioc容器前bean注入的操作

也就是说,第一次初始化ioc容器的时候也会去从map中获取,而map中没有,此处的map也就是ioc。会通过一个方法创建实例,会通过一个方法

初始化实例,以后从map中获取就不会创建对象了。但值得注意的是,如果哪个bean发生更改,ioc会销毁,然后出现初始化。

在自动装配的时候spring 都能自动进行这些getbean操作。

好啦。今天就这样吧,下次我再说spring中的aop。小编由于自己刚总结完,csdn没能来得及审核。

推荐看一下这个链接的spring的ioc原理 狠牛。

http://www.cnblogs.com/ITtangtang/p/3978349.html


如果喜欢我们的微信公众号,请长按下方二维码关注哦。你不关注一下吗?

本文分享自微信公众号 - 微光点亮星辰(SandTower),作者:肖颖

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2016-10-14

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Spring框架结构

    spring的jar包只有20个左右,每个都有相应的功能,一个jar还可能依赖了若干其他jar,所以,搞清楚它们之间的关系,配置maven依赖就可...

    聚沙成塔
  • 校长讲堂第八讲

    一个 C 程序可能有很多部分组成,它们被分别编译,并由一个通常称为链接器、链接编辑器或加载器的程序绑定到一起。由于编译器一次通常只能看到一个文件,因此它无法检测...

    聚沙成塔
  • Spring BootCLI安装

    Spring Boot是一个命令行工具,用于使用Spring进行快速原型搭建。它允许你运行Groovy脚本,这意味着你可以使用类Java的语法,并且没有那么多的...

    聚沙成塔
  • 深度学习进化编年大事记

    安妮 编译自 Import.io官方博客 量子位出品 | 公众号 QbitAI 本文作者Andrew Fogg,可视化网页抓取网站Import.io的联合创始人...

    量子位
  • 为什么要用spring,springMVC?

    今天被公司派到别的公司谈项目,刚去就先被面试了一波(原来是把我外包到别的公司做项目了 -。-),面试时候问了我一个问题,很简单,就是问我java开发web项目为...

    三哥
  • 机器学习入门科普:监督学习和无监督学习都是什么?都能干什么?

    学习能力是动物特别是人特有的,根据达尔文的理论,它也是所有物种生存和进化的关键要素。机器虽然不能自主进化,但似乎也遵循同样的规律。

    华章科技
  • 未来十年,机器学习工程师会消失吗?

    其实,我们在每个领域一开始都会扮演着专业的角色,但随着时间的推移,就变得普通起来,换一句话说,就是说的多了大家也就见怪不怪了。

    AI科技大本营
  • 深度 | 脆弱的神经网络:UC Berkeley详解对抗样本生成机制

    机器之心
  • 黑莓将推出企业物联网平台,称超安全且可扩展

    据报道,黑莓(BlackBerry)推出业界唯一针对超安全、超连接(ultra-secure hyperconnectivity)的企业物联网(EoT)平台Bl...

    镁客网
  • 【DB笔试面试547】在Oracle中,什么是用户的表空间配额(User tablespace Quota)?

    在Oracle中,什么是用户的表空间配额(User tablespace Quota)?

    小麦苗DBA宝典

扫码关注云+社区

领取腾讯云代金券