概念
Spring通过配置文件描述Bean与Bean之间的依赖关系,Java通过反射实例化Bean并建立Bean之间的依赖关系。Ioc容器除了完成以上的功能之外还有生命周期管理,事件发布,资源装载等功能。
Bean实例化的过程
1:读取xml,注解等配置信息。将Bean注册到Bean注册表里。
2:从注册表里实例化Bean
3:将实例化出来的Bean放入Spring容器中
4:应用程序使用Bean
Ioc实现
BeanFactory:是框架的基础设施,面向Spring本身。AppliactionContext面向框架的使用者,所以我们用AppliactionContext比较多
BeanDefinitionRegistry:Spring中的每一个节点元素都通过BeanDefinition对象表示,它描述了Bean的配置信息。通过BeanDefinitionRegistry可以注册BeanDefinition对象
SpringBean的作用域
singleton:是单例模式,也是默认模式,只有一个Bean实例,在多线程下不安全。
prototype:原型模式,每次获取Bean时都创建一个新的Bean实例
request:一次request一个Bean
session
global session
Spring的装配方式
有自动装配与手动装配,手动装配包括xml,构造方法,setter等。
自动装配包括五种方式,no、byname、bytype(如果有多个bean符合条件会抛出错误)、constructor、autodetect(先尝试constructor失败了再尝试bytype)