一.bean的作用域
使用bean的scope属性配置bean的作用域
- singleton
默认的,在容器的整个生命周期内只创建一个bean prototype
创建ioc容器的时候bean没有创建,从容器中获取bean的时候才开始闯将bean,每次获取的bean不一样request
每次http请求将会有各自的bean实例,该作用域仅在基于web的applicationContext有session
在一个http session中,一个bean对应一个实例,基于webglobal session
global session作用域类似于标准的HTTP Session作用域,不过它仅仅在基于portlet的web应用中才有意义。Portlet规范定义了全局Session的概念,它被所有构成某个portlet web应用的各种不同的portlet所共享。在global session作用域中定义的bean被限定于全局portlet Session的生命周期范围内。如果你在web中使用global session作用域来标识bean,那么web会自动当成session类型来使用。
二.ioc容器中bean的生命周期
这Spring框架中,一旦把一个bean纳入到Spring IoC容器之中,这个bean的生命周期就会交由容器进行管理
- 通过构造器或工厂方法创建bean的实例
- 为bean属性设置值(bean中setXxx()方法)
- 调用bean初始化方法 (init())
- bean可以使用
- 当容器关闭时,调用bean销毁方法 (destroy())
bean的init-method和destroy-method属性指定bean初始化和销毁的方法。
可以在bean调用初始化方法前后容器内所有bean进行处理,实现BeanPostProcessor接口
三.spring引入外部文件
步骤:
- 导入属性文件
<!-- context命名空间,location指定文件位置-->
<context:property-placeholder lacation="classpath:db.properties"/>
db.properties
user=root
password=
jdbcUrl=jdbc:mysql:///test?useUnicode=true&characterEncoding=UTF-8
driverClass=com.mysql.jdbc.Driver
2.使用外部化属性文件的属性
<!--配置数据源 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="user" value="${user}"/>
<property name="driverClass" value="${driverClass}"/>
<property name="password" value="${password}"/>
<property name="jdbcUrl" value="${jdbcUrl}"/>
</bean>
`