Bean XML 配置(2)- Bean作用域与生命周期回调方法配置
作用域配置
spring中创建bean时,可以指定作用域。作用域有以下5种类型:
-
单例(singleton)
默认作用域,一个spring容器中只有Bean的一个实例。 -
原型(prototype)
每次获取Bean时生成一个新的实例。 -
请求(request)
作用域是单个http请求,单个http请求只有Bean的一个实例。一旦请求完成,bean实例将被销毁。 -
会话(session)
作用域是单个会话,单个会话只有Bean的一个实例。一旦会话结束,bean实例将被销毁。 -
全局会话(global-session)
在Portlet应用程序中使用,每个全局会话只有Bean的一个实例。普通Servlet应用中与会话作用域无区别。
XML中配置Bean的作用域
示例:
<bean id="app" class="App" scope="prototype"></bean>
设置作用域:scope="prototype"
,“原型”作用域表明每次获取Bean时生成一个新的实例。
生命周期回调方法
Spring容器负责管理Bean的生命周期,如下所示:
- 创建bean实例
- 设置bean的属性值
- 调用初始化回调方法
- 使用Bean
- 调用销毁回调方法
- 销毁Bean
Bean在创建时,需要执行一些资源(数据库、套接字、文件)申请等初始化工作,可以在Bean的初始化回调方法中处理,此方法由Spring容器调用。
同样Bean在销毁时,需要执行一些资源(数据库、套接字、文件)申请等销毁工作,可以在Bean的销毁回调方法中处理,此方法由Spring容器调用。
1. 创建初始化方法和销毁方法
public class App {
// ...
public void init() {
System.out.println("初始化...");
}
public void close() {
System.out.println("销毁...");
}
// ...
}
2. 在XML配置中指定方法
指定Bean的初始化方法和销毁方法,Spring容器会为该Bean调用这些方法。
<bean id="app" class="App" init-method="init" destroy-method="close"></bean>