Spring(3.2.3) - Beans(6): 作用域

Spring 支持五种作用域,分别是 singleton、prototype、request、session 和 global session。

作用域 说明
 singleton (默认作用域)单例模式,每个 Spring IoC 容器只会实例化一个使用 singleton 定义的 Bean。
 prototype  原型模式,
 request  对于每次 HTTP 请求,使用 request 定义的 Bean 都产生一个新实例只有在 Web 应用中使用 Spring 时,该作用域才有效。
 session   对于每次 HTTP 会话,使用 session 定义的 Bean 都产生一个新实例。只有在 Web 应用中使用 Spring 时,该作用域才有效。
 global session   只有在 Web 应用中使用 Spring 时,该作用域才有效。

singleton 作用域

默认情况下,Spring IoC 容器启动后,在初始化过程中,会以单例模式创建并配置所有使用 singleton 定义的 Bean 的实例。对于每个配置的 Bean,整个 Spring 容器共享唯一的实例。容器会负责跟踪 Bean 实例的状态和维护 Bean 实例的生命周期行为。每次通过容器获取 singleton 定义的 Bean 时,容器返回的都是同一个实例。

prototype 作用域

Spring IoC 容器的初始化过程中,不会创建使用 prototype 定义的 Bean 的实例。容器不会负责跟踪 Bean 实例的状态,也不会负责维护 Bean 实例的生命周期行为。每次通过容器获取 prototype 定义的 Bean 的实例时,容器都会创建一个新的实例返回。

时间: 2024-11-10 08:04:39

Spring(3.2.3) - Beans(6): 作用域的相关文章

Spring中bean的五个作用域简介(转载)

Spring上个版本的IoC容器支持两个不同的bean作用域(单例与原型).Spring 2.0改进了这一点,不仅提供了一些依赖于Spring部署环境(比如说,在web环境中的request和session作用域bean)的额外的作用域,而且提供了所谓的'钩子'('hooks')(因为找不到更好的表达)使Spring用户可以创造自己的作用域. 应该注意的是,即使单例与原型作用域beans的基本(内在)实现发生了变化,上述变化对最终用户来说是透明的...现有的配置不需要改变或放弃. 如何使用spr

【Spring实战4】07---Bean的作用域

默认情况下,Spring应用上下文所有bean都是单例模式创建,也就是,不管给定的一个bean被注入到别处多少次,但都是同一个实例 Spring为Bean定义了多种作用域 单例 Singleton  在整个应用中,只创建bean的一个实例 原型 Prototype 每次注入或者通过Spring应用上下文获取的时候,都会创建新的bean实例 会话 Session 在web应用 中,为每个会话创建一个bean实例 请求 request 在web应用中,为每个请求创建一个bean实例 在Javacon

第37讲 谈谈Spring Bean的生命周期和作用域

在企业应用软件开发中,Java 是毫无争议的主流语言,开放的 Java EE 规范和强大的开源框架功不可没,其中 Spring 毫无疑问已经成为企业软件开发的事实标准之一.今天这一讲,我将补充 Spring 相关的典型面试问题,并谈谈其部分设计细节.今天我要问你的问题是,谈谈 Spring Bean 的生命周期和作用域?典型回答Spring Bean 生命周期比较复杂,可以分为创建和销毁两个过程.首先,创建 Bean 会经过一系列的步骤,主要包括:实例化 Bean 对象.设置 Bean 属性.如

spring中bean的五种作用域?Spring中的bean是线程安全的吗?

spring中bean的五种作用域 当通过spring容器创建一个Bean实例时,不仅可以完成Bean实例的实例化,还可以为Bean指定特定的作用域.Spring支持如下5种作用域: singleton:单例模式,在整个Spring IoC容器中,使用singleton定义的Bean将只有一个实例 prototype:原型模式,每次通过容器的getBean方法获取prototype定义的Bean时,都将产生一个新的Bean实例 request:对于每次HTTP请求,使用request定义的Bea

8 -- 深入使用Spring -- 2...2 指定Bean的作用域

8.2.2 指定Bean的作用域 当使用XML 配置方式来配置Bean实例时,可以通过scope来指定Bean实例的作用域,没有指定scope属性的Bean实例作用域默认是singleton. 当采用零配置方式来管理Bean实例时,可使用@Scope Annotation,只要在该Annotation中提供作用域的名称即可. package edu.pri.lime._8_2_2.bean.impl; import org.springframework.context.annotation.S

Spring(3.2.3) - Beans(10): 生命周期

Spring 容器可以管理 singleton 作用域 Bean 的生命周期,容器能够跟踪 Bean 实例的创建.销毁.管理 Bean 生命周期行为主要有两个时机: 注入 Bean 的依赖关系之后 即将销毁 Bean 之间 依赖关系注入之后的行为 有三种方式可以在 Bean 的所有属性设置成功后执行特定的行为: 实现 org.springframework.beans.factory.InitializingBean 接口 使用 init-method 属性 使用 @PostConstruct

Spring中Bean的定义及作用域的注解实现

Classpath扫描与组件管理: 从Spring3.0开始,Spring JavaConfig项目提供了很多特性,包括使用java而不是xml定义bean,指的是注解 @Configuration,@Bean ,@Import ,@DependsOn @Component是一个通用注解,可用于任何bean @Repository:通常用于注解DAO类,即持久层 @Service:通常用于注解Service类,即服务层 @Controller:通常用于Controller类,即控制层MVC 元注

Spring之 Auto-Wiring All Beans of Compatible Type

Auto-Wiring All Beans of Compatible Type @Autowired 注解按类型(type)依赖入住的时候,可以把类型兼容的所有类注入到数组.链表.map等集合数据结构中.如:mybatis中TypeHandler为例: package com.doctor.practice01; import java.sql.CallableStatement; import java.sql.PreparedStatement; import java.sql.Resul

Spring(3.2.3) - Beans(8): 基于 Annotation 的配置

除了基于 XML 的配置外,Spring 也支持基于 Annotation 的配置.Spring 提供以下介个 Annotation 来标注 Spring Bean: @Component:标注一个普通的 Spring Bean @Controller:标注一个控制器组件类 @Service:标注一个业务逻辑组件类 @Repository:标注一个 DAO 组件类 基于 Annotation 配置的示例 DAO 组件以 @Repository 标注: public interface UserD