图书馆网站建设网站的目的,新手做网站盈利,网站移动端是什么,广州哪里有做网站spring的Ioc真是个好东西啊#xff0c;那它到底是什么东西呢#xff0c;控制反转#xff0c;到底是怎么转的呢#xff1f;
假设啊你现在是一个导演#xff0c;想排部戏#xff0c;那是不是得需要演员和舞台(spring中的bean)#xff0c;如果按平常的编程思维就是new 一个…
spring的Ioc真是个好东西啊那它到底是什么东西呢控制反转到底是怎么转的呢
假设啊你现在是一个导演想排部戏那是不是得需要演员和舞台(spring中的bean)如果按平常的编程思维就是new 一个actor一个stage 然后actor 开始perform。但如果你利用控制反转(Ioc)一开始演员就自动给你送来了不用去你找也不用你去new演员表演需要舞台这个时候舞台也随着演员一起出现了这个称为依赖注入(DI)。
接下来我们来看看一个Bean是从注册到使用走过了一个什么历程。
首先我们认识下spring容器BeanFactory和ApplicationContext由于后者是建立在前者之上的我们先看前者。它有个BeanFactory接口定义了如何访问管理容器内的Bean方法。还有个BeanDefinitionRegistry接口专门管理Bean的注册配置。默认一个DefaultListableBeanFactory实现了上述两接口。而Bean的注册信息即BeanDefinition可通过bindViaCode方法来自行编码完成注册也可分别通过bindViaproperties或bindViaXml方法利用BeanDefinitionReader来载入properties文件或xml配置文件注册。现在最常用的就是通过xml文件来配置可用Setter方法注入或构造方法注入(点击查看Spring Ioc的一个Demo)。
当注册好Bean之后就等着容器启动还有调用啦。如果用的是BeanFatory容器那它默认是延迟加载实例化Bean的即当你用到这个Bean时它才帮你实例化了送过来如果用的是ApplicationContext容器那是可容器一启动即实例化所有的Bean的。
从Bean的实例化到准备就绪等待使用中间还要走好常的路呢首先容器启动的时候有时我们还需要对配置文件做一些处理如${jdbc.passwd}此类占位符的二次加载啊还有其他对配置文件的再处理的我们会用到BeanFactoryPostProcessor然后Bean实例化后并不马上成为就绪状态这时候BeanWrapper会对其包裹返回一个BeanWrapper实例下阶段是设置初始属性值接下来就是Aware接口依赖注入就是靠这个实现啦它要检查是否还有需要其他Bean的注入之后进入关键的BeanPostProcessor处理为什么说是关键的呢因为在这个阶段会做一些诸如生成代理的行为Spring AOP(点击查看Spring Aop 原理总结)就靠它了还有初始化方法啊都在这里。总之就是一个本来很纯净的Bean我们将我们所需要的东西都加工上去最后返回它的一个代理。
自此一个Bean从注册到诞生准备做贡献的过程就是这样了。