在Spring2.0中,Spring只为在每个IOC 容器中声明的bean创建一个实例,整个IOC容器范围内都能共享该实例,后续的getBean()和对bean的引用都将返回这个唯一的bean实例。该作用域被称作singleton,它是所有bean的默认作用域。
在 IOC容器中bean的作用域
singleton:在每个IOC容器中每个bean定义对应一个对象实例
prototype:原生,一个bean定义对应多个对象实例
request:在一个http请求中,一个bean定义对应一个实例,即每次http请求都将会有自己的bean实例
session:在一个http请求中,一个bean定义对应一个实例,该作用域仅在基于web的spring ApplicationContext情形下有效
============================
Spring中定制bean的初始化和销毁过程
Spring的IOC容器可以管理Bean的生命周期,容许bean在生命周期的特定点执行定制的任务
spring的IOC容器对bean的管理过程
通过构造器或者工厂方法创建bean实例
为bean的属性设置其他值和对其他bean的引用
调用bean的初始化方法
bean可以使用了
当容器关闭时,调用bean的关闭方法
==================================================
分离关注:将与业务无关的方法分离出去,就叫做分离关注
在利用注解进行分离关注的操作时,需要做两点
1.设置自动扫描的包
2.配置必须的bean后置处理器
@preConstructor:前置处理器
@postConstructor后置处理器
===================================================
外部化bean的配置
在xml配置文件中,有时需要在bean的内部混入一些系统部署的细节信息(如文件路径和数据源配置),而这些部署的细节实际上需要和bean相分离
spring提供了一个propertyPlaceHolderConfiurer的beanFactory的后置处理器,这个处理器容许用户将bean的配置部分内容移到属性文件中,可以在bean的配置文件里使用形式为
$(var)的变量,propertyPlaceHolderConfiurer从配置文件里加载属性,并利用这些属性替换这些变量
将需要配置的信息全部写到属性文件中
在xml的配置文件中只需要导入外部化的属性配置文件
这样做法是耦合度越小越好,