博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
spring IOC
阅读量:5752 次
发布时间:2019-06-18

本文共 772 字,大约阅读时间需要 2 分钟。

1 ioc和di

ioc,inversion of control

控制转化。控制主要指的是对对象的创建的控制,本来程序按需创建对象,但是现在控制权交给第三方,即spring,程序不需要自己创建对象了,它需要对象的时候只要从spring的Bean容器中get即可,即控制权由程序转化到了第三方框架spring。

di,dependency injection

依赖注入。假如A依赖于对象B,如果不使用spring的话,我们需要首先创建B对象,然后再创建A对象,但是,依赖注入是说,从java Bean容器中获取A对象的时候,只要在xml中指定了A和B的依赖关系,A所依赖的B对象直接由spring注入给A使用。

 

2 spring IOC容器中的beans是何时创建的

如果scope是单例的话,默认情况下是ioc容器启动的时候就会实例化,但是如果设置了lazy-init="true"的话,那么要等到getBean()的时候才实例化该bean。

如果scope是prototype的话,是要等到getBean()时才会实例化该bean,原因很简单,都没有用就实例化的话,浪费内存。

创建ClassPathXmlApplicationContext对象的时候,只是解析了spring xml配置文件,然后将里面用bean标签定义的bean元素创建BeanDefinion对象,放入DefaultListableBeanFactory的ConcurrentHashMap中。

prototype的bean的实例化是在getBean()的时候。

可见,除了对象的实例化不同以外,spring对主逻辑几乎没有影响,这样做带来的巨大好处就是对对象解耦合。

 

转载于:https://www.cnblogs.com/hustdc/p/8351506.html

你可能感兴趣的文章
干货清单 | 3分钟告诉你深度学习应该这么学
查看>>
常用函数
查看>>
为 Hexo 搭建的博客添加属于自己的个性域名
查看>>
关于小程序打开app传参问题
查看>>
数组归并排序
查看>>
移动端网页怎么做?
查看>>
吴颖二:12.12 午夜金评 特朗普致力于通过税改计划演讲使美元指数暴涨
查看>>
中年妇女Python入门指南(二)
查看>>
IOS 崩溃日志分析
查看>>
[源码分析系列] 不要在循环体中使用 array_merge()
查看>>
Netty源码分析之一次请求是如何到达channelRead的?
查看>>
大数据量与高并发情况下的数据库优化
查看>>
精美待办软件安利
查看>>
火绒安全警报:疑似方正集团子公司签名泄露 遭黑客利用盗取Steam账号
查看>>
自定义有多个按钮节点的SliderView
查看>>
Node.js Buffer(缓冲区)
查看>>
架构师的工作
查看>>
iOS一键打包自动改build并输入更新日志上传发布应用到Fir,Pgyer
查看>>
css清除浮动float的七种常用方法总结
查看>>
一步一步搭建 springboot-2.1.3+dubbo-2.7.1 项目
查看>>