`

Spring-bean作用域

 
阅读更多

一、Spring Framework支持五种作用域

 

1、singleton : 一个bean定义对应一个对象实例 (spring容器缺省作用域)

2、prototype : 一个bean定义对应多个对象实例 (对所有有状态的bean应该使用prototype作用域,而对无状态的bean则应该使用singleton作用域,Dao不会被配置成prototype,应该是无状态的singleton

 

3、request: 在一次http请求中,一个bean定义对应一个实例,即每次http请求将会有各自得bean实例,它们依据某个bean定义创建而成。该作用域仅在基于web的spring applicationcontext情形下有效。

4、session : 在一个http session中,一个bean定义对应一个实例。该作用域仅在基于web的spring applicationcontext 情形下有效

5、global session :在一个全局的http session中,一个bean定义对应一个实例 

 

二、web使用的作用域

1、Request作用域 :在当前http request内有效,当请求结束后,request作用域的bean实例将销毁

2、Session作用域  :在当前http Session内有效

3、global session作用域 : 仅仅在基于portlet的web应用中才有意义

 

三、作用域bean与依赖

1、能够在HTTP request或者Session(甚至自定义)作用域中定义bean固然很好,但是Spring IoC容器除了管理对象(bean)的实例化,同时还负责协作者(或者叫依赖)的实例化。如果你打算将一个Http request范围的bean注入到另一个bean中,那么需要注入一个AOP代理来替代被注入的作用域bean。也就是说,你需要注入一个代理对象,该对象具有与被代理对象一样的公共接口,而容器则可以足够智能的从相关作用域中(比如一个HTTP request)获取到真实的目标对象,并把方法调用委派给实际的对象

 

2、xml配置文件中,要创建一个作用域bean的代理

     

<beans xmlns="http://www.springframework.org/schema/beans"

  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

  xmlns:aop="http://www.springframework.org/schema/aop"

  xsi:schemaLocation="

  http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd

 

  http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">

 

<aop:scoped-proxy/>

 

 

3、参考文档

http://www.xuehuile.com/blog/14f393edfeb24c259caaf5cf762ceb1d.html

      http://blog.arganzheng.me/posts/spring-bean-scopes.html

 

 

 

 

分享到:
评论

相关推荐

    spring的bean作用域

    在Spring中,有五种主要的Bean作用域: 1. **Singleton作用域**: - Singleton是Spring默认的Bean作用域。这意味着,无论何时,只要Spring容器被初始化,它都会创建一个Bean实例,并将其缓存起来。后续对相同ID的...

    Spring 的bean的作用域总结

    Spring 的bean的作用域总结,详细的总结了 Spring 的bean的作用域

    spring-aware接口实现与bean作用域(spring多容器层面)

    关于`bean的作用域`,Spring支持多种Bean的作用域,包括单例(Singleton)、原型(Prototype)、会话(Session)和请求(Request)。这些作用域定义了Bean的生命周期和创建行为: 1. **单例(Singleton)**:默认...

    spring-context-4.2.xsd.zip

    `spring-context-4.2.xsd`还定义了处理bean作用域(scope)、AOP代理(proxy)、事件发布(event publishing)等功能的相关元素。例如,`scope`属性允许我们设置bean的作用域,可以是`singleton`(单例)、`...

    SSH笔记-bean的作用域

    在Spring框架中,Bean的作用域是管理对象生命周期和作用范围的关键概念。Bean的定义通常包含在XML配置文件中,通过`&lt;bean&gt;`标签进行配置。当我们谈论"SSH笔记-bean的作用域"时,这里SSH指的是Spring、Struts和...

    spring bean 的作用域(scope)

    spring bean 的作用域(scope), SPringle bean的作用域

    详解Spring中bean的作用域

    Spring中bean的作用域详解 Spring 中 bean 的作用域是指 Spring IoC 容器中 bean 的生命周期和实例化方式。bean 的作用域决定了 bean 的实例化和生命周期的管理方式。在 Spring 中,bean 的作用域可以分为五种:...

    spring Bean的作用域之间有什么区别1

    Spring Bean 的作用域之间有什么区别:Bean的作用域: 可以通过scope 属性来指定bean的作用域 ①singleton: 默认值。当IOC容器

    详解Spring中Bean的生命周期和作用域及实现方式

    Spring中Bean的生命周期和作用域及实现方式 Spring是一个非常流行的Java应用程序框架,它提供了一个灵活的机制来管理Bean的生命周期和作用域。Bean的生命周期和作用域是Spring框架中两个非常重要的概念,它们决定了...

    Spring Bean 作用域.pdf

    spring Bean 作用域.pdf

    Spring中Bean的作用域

    NULL 博文链接:https://huangminwen.iteye.com/blog/1486717

    Spring Bean的作用域.docx

    Spring提供了五种不同的Bean作用域,每种都有其特定的使用场景和行为。 1. **Singleton作用域**:这是Spring的默认作用域,意味着无论何时从容器中请求一个特定的Bean,都会返回同一个实例。在配置文件中,可以使用...

    JSP 中Spring Bean 的作用域详解

    JSP 中Spring Bean 的作用域详解 Bean元素有一个scope属性,用于定义Bean的作用域,该属性有如下五个值: 1&gt;singleton: 单例模式,在整个spring IOC容器中,单例模式作用域的Bean都将只生成一个实例。一般Spring...

    spring-framework-3.2.5.RELEASE.rar

    在实际项目中,为了充分利用Spring的优势,开发者应遵循一些最佳实践,如合理划分bean的作用域,正确处理事务,使用AOP进行切面逻辑,以及使用Spring Boot简化项目初始化和配置。 8. **Spring Boot** 虽然不是...

    Spring--2.Spring 中的 Bean 配置-2-1

    - Spring支持五种Bean的作用域:singleton(单例)、prototype(原型)、request、session和globalSession。默认是singleton。 - 例如,定义一个prototype作用域的Bean: ```xml &lt;bean id="exampleBean" class=...

    spring-boot-actuator-web-api.pdf

    - 响应结构通常提供Bean的名称、类型和作用域。 4. Caches (缓存信息) - 可以查询和清除应用程序中配置的缓存信息。 - 通过命名可以获取特定的缓存信息,并能清除特定或所有缓存。 5. ...

    spring-beans源码

    Spring支持五种Bean的作用域:单例(Singleton)、原型(Prototype)、请求(Request)、session(Session)和全局会话(Global Session)。不同的作用域决定了Bean的实例化策略和生命周期。 7. **Bean后处理器** ...

    SPRING FRAMEWORK BEAN作用域和生命周期原理解析

    SPRING FRAMEWORK BEAN作用域和生命周期原理解析 Spring Framework 是一个流行的 Java Web 应用程序框架,它提供了一个强大的依赖注入机制,称为 Bean 容器。Bean 容器管理着应用程序中的所有对象,并提供了一些...

    spring-core.pdf

    ##### 1.5 Bean作用域 - **1.5.1 单例作用域**: 默认情况下,每个Bean都是单例的,即在容器中只有一个实例。 - **1.5.2 原型作用域**: 对于每次请求都创建一个新的实例,适用于那些不希望共享的状态Bean。 - **...

Global site tag (gtag.js) - Google Analytics