美文网首页
Spring实战笔记-第三章-bean的作用域

Spring实战笔记-第三章-bean的作用域

作者: ZacharyJia | 来源:发表于2016-05-29 21:06 被阅读69次

基础

默认情况下,Spring应用上下文中的bean都是单例,也就是说不管给定的bean被注入到其他bean多少次,每次注入的都是同一个实例。

Spring中定义的作用域:

  • 单例(Singleton):整个应用中只创建bean的一个实例
  • 原型(Prototype):每次注入或者通过Spring应用上下文获取的时候,都会创建一个新的bean实例
  • 会话(Session):在Web应用中,为每个会话创建一个bean实例
  • 请求(Request):在Web应用中,为每个请求创建一个bean实例

单例是默认作用域,如果定义其他的作用域,则需要使用@Scope注解,它可以与@Component或者@Bean一起使用。如:

@Component
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
public class Notepad {……}

如果使用xml来配置,则可以在<bean>标签的scope属性中设置。

会话和请求作用域注入到单例作用域

当一个会话或者请求作用域的bean(BeanSession)要注入到单例作用域的bean(BeanSingle)中时,会出现一些问题:

  1. BeanSingle在Spring应用上下文加载的时候创建,此时Spring会试图将BeanSession注入到BeanSingle中,而此时BeanSession还不存在(当有用户进入系统,创建会话后才会被创建)。
  2. 系统中可能会存在多个BeanSession,大多数情况下我们不希望注入一个固定的BeanSession到BeanSingle中,而是当前Session中的那个。

为了解决这个问题,Spring不会将实际的BeanSession注入到BeanSingle中去,而是注入一个BeanSession的代理。这个代理会暴露出和BeanSession相同的方法,BeanSingle会认为它是一个普通的BeanSession。

@Scope注解有一个proxyMode属性,用于配置代理。有两种方式:

  1. ScopeProxyMode.INTERFACES,这表明该代理会实现BeanSession接口,并将调用 委托给具体的实现bean。这种方法要求BeanSession是一个接口。
  2. ScopeProxyMode.TARGET_CLASS,这表明Spring会使用CGLib生成目标类的扩展的方式来创建代理。这种方式适用于BeanSession是具体的类。

感谢您的阅读!
本账号已经不再更新,更多文章请移步我的个人博客https://www.zacharyjia.me

相关文章

  • SPRING BEAN的基础

    一、SPRING BEAN的定义: 二、SPRING BEAN的作用域: 作用域例子: your msg :p...

  • Spring Bean 作用域

    原文 :一文读懂Spring Bean作用域 - RelaxHeart网 Spring Bean的几种作用域 Sp...

  • Spring

    Spring Bean 作用域 Spring 3 中为 Bean 定义了 5 中作用域分别为 singleton(...

  • Spring_04_Bean的作用域

    Bean的作用域  当在Spring中定义个bean时,你必须声明bean的作用域选项.例如,为了强制Spring...

  • Bean的作用域

    Bean的作用域: singleton 当一个bean的作用域为singleton,那么Spring IoC容器中...

  • Bean的作用域

    Bean的作用域: singleton 当一个bean的作用域为singleton,那么Spring IoC容器中...

  • 7、Spring-XML-作用域

    一、概要 scope 用来配置 spring bean 的作用域。 在spring2.0之前,bean只有2种作用...

  • Spring-XML-作用域

    一、概要 scope 用来配置 spring bean 的作用域。 在spring2.0之前,bean只有2种作用...

  • Spring Bean的生命周期

    Spring 容器可以管理 singleton 作用域 Bean 的生命周期,在此作用域下,Spring 能够精确...

  • spring详解(二)

    ③容器中bean的作用域: |作用域|描述||---|---||singleton|单例模式,在整个Spring ...

网友评论

      本文标题:Spring实战笔记-第三章-bean的作用域

      本文链接:https://www.haomeiwen.com/subject/jtqmrttx.html