spring学习

关于ioc

1.为什么要用ioc: 普通的代码中的对象存在依赖,这种依赖会体现在程序员编码的过程中。但是有很多时候,对象间的依赖会提高代码耦合性,不利于业务的扩展。

                             使用ioc,我们会提前在配置中设置好需要用到的对象,在业务逻辑代码中,我们只需要对相应的接口操作,而不需要关心具体实现类的对象,对象的加载由                                      spring框架负责,这样,当我们需要换一个对象时,只需要改变配置文件就可以。极大地降低了代码间的依赖。

2.java的反射机制为ioc的实现提供了可能性。配置文件中我们配置好对象的各种信息,包括构造器,方法以及属性。反射机制会利用这些信息进行对象的装配。

3.资源访问:spring提供了统一的资源访问接口Resource以及相应的加载接口ResourceLoader(提供方法getResource)。可以更方便灵活的家在资源

4.关于Bean的管理

核心接口BeanFactory--IOC容器(Bean管理)面向spring本身

 ApplicationContext--应用上下文(应用管理)面向开发者

BeanFactory有着复杂的继承体系,其中XmlBeanFactory是最常用的实现类

每个Bean有自己的id,JAVA类型,以及具体数据等信息

ApplicationContext也可以实现加载Bean配置文件,而且有更多面向开发者的功能,例如上下文的启动关闭刷新等

启动的不同:ApplicationContext会在加载文件时自动实例化所有单例模式 BeanFactory在第一次调用的时候才回实例化并缓存

WebApplicationContext 中保存了ServletContext引用,同时提供了一个常量值key,使得ServletContext可以通过这个key获取WebApplicationContext。

WebApplicationContext使得Web应用环境可以访问到Spring的应用上下文

5.Bean的生命周期管理

Bean的整个生命周期大概由三类方法控制:1.Bean自身的方法 如构造器,set方法等  2.Bean级的生命周期方法(需要Bean去实现接口)  3.容器级生命周期方法(配置到BeanFactory)

不考虑第3类的话,当一个bean被调用,开始实例化后会经历一下几个步骤

1.构造器实例化  2.设置值(set方法)3.设置Bean的name  4.设置beang工厂  5.初始化Bean的方法

如果bean是singleton的将由spring保管,否则会交给开发者保管  所以singleton的bean在最后会被销毁

如果配置了容器级的接口的话,则在各个步骤之间会穿插这调用容器级接口方法对bean进行加工。 ApplicationContext管理bean时可以自动加载这些容器级接口,而bean工厂需要手动配置

首先spring容器读取Bean配置信息,根据配置信息维护一张Bean Definition的注册列表,根据实际调用情况实例化Bean,再将Bean(Singleton)存入spring容器中以供使用







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值