- Spring 2.5之前的Bean 的作用域只有两种
- Springleton:单例Bean
- Prototype : 原型Bean
- Spring 2.5 之后Bean的作用域有一下五种
-
作用域 描述 singleton (单例) 使用该属性定义Bean时,IOC容器仅创建一个Bean实例,IOC容器每次返回的是同一个Bean实例。在整个spring ioc 容器中只能创建一个Bean实例 prototype (原型) 使用该属性定义Bean时,IOC容器可以创建多个Bean实例,每次返回的都是一个新的实例。 每次调用都会创建一个bean request (请求) 该属性仅对HTTP请求产生作用,使用该属性定义Bean时,每次HTTP请求都会创建一个新的Bean,适用于WebApplicationContext环境。 session (会话) 该属性仅用于HTTP Session,同一个Session共享一个Bean实例。不同Session使用不同的实例。 global-session (全局) 该属性仅用于HTTP Session,同session作用域不同的是,所有的Session共享一个Bean实例。
-
- 如何使用
- 通过bean 标签的scope 属性来定义bean的作用
- Bean的生命周期
- 指定Bean的初始化方法 和销毁方法 (bean容器的生命周期是由Spring 容器来管理的 也可以自己手动管理)
- 可以Spring中指定Bean的初始化方法 ,当JavaBean实例化完成后调用该方法对javaBean做初始化操作 ( init-method="init")
- 同时也可以在Spring中指定Bean的销毁方法 ,Spring销毁该javaBBan实例之前进行一些销毁前的资源释放操作(destroy-method="close")
- 指定Bean的初始化方法 和销毁方法 (bean容器的生命周期是由Spring 容器来管理的 也可以自己手动管理)
- bean 的自动装载
- 普通属性的自动装配
- 集合的自动装配
- 普通属性的自动装配
- bean 延时实例化
- ApplicationContext 实现的默认行为就是在启动时讲所有单例 bean 提前进行实例化
- 提前实例化意味着作为Bean 的实例化工作作为容器初始过程的一部分,ApplicationContext容器会创建并配置所有的单例Bean
- 通常情况下这是件好事 ,因为这样在配置中任何错误就会即刻被发现 (否则的话可能花几个小时甚至几天)
- 如果开发者不想让一个单例Bean在AppcationContxt 初始化时被提前实例化 那么可以讲Bean设置为延迟实例化
- ki