Spring实战-bean作用域

  1. Spring定义了多种域

    1. 单例(Singleton):在整个应用中,只有一个实例
    2. 原型(Prototype):每次注入或者通过Spring应用上线文获取时,都创建一个bean实例
    3. 会话(Session):在web应用中,为每个会话创建一个bean.使用场景:购物车
    4. 请求(Request):在web应用中,为每个请求创建一个bean
  2. 指定作用域
    1. 在组件扫描和自动装配中
      1. @Component
        @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
    2. 在xml配置中
      1.   

        <bean id="xx" class="org.apache.xx" scope="prototype"/>
  3. 将会话级别的bean注入到系统级别的bean时,需要特殊处理,否则系统启动时会提示,bean不存在。
    1.   解决方法

      <bean id="xx" class="org.apache.购物车类">
          <aop:scoped-proxy/>
      </bean>
    2.   为了使用“<aop:scoped-proxy/>”,还必须在beans的xml中引入Spring的aop命名空间

原文地址:https://www.cnblogs.com/jiangtao1218/p/9691617.html

时间: 2024-10-13 09:59:26

Spring实战-bean作用域的相关文章

Spring中Bean的五个作用域

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

Spring实战(七)Bean 的作用域

1.Spring中bean 的多种作用域 单例(Singleton):整个应用中只创建一个bean 的实例,Spring默认创建单例的bean: 原型(Prototype):每次注入or通过Spring应用上下文获取时,创建一个新的bean实例: 会话(Session):在web应用中,为每个会话创建一个bean实例,例如用户购物车的bean: 请求(Request):在web应用中,为每个请求创建一个bean实例: 2.设置会话(Session)作用域 @Component @Scope{ v

[Spring实战系列](14)Bean的自动检测

即使<context:annotation-config>有助于完全消除Spring注解中的<property>和<constructor-arg>元素,但是还是不能完全消除,仍然需要使用<bean>元素显示定义Bean.因此<context:component-scan>元素出现了,它除了完成<context:annotation-config>一样的工作,还允许Spring自动检测Bean和定义Bean.这就意味着我们不使用<

[Spring实战系列](10)初探Bean生命周期

1. 生命周期流程图 Bean在Spring容器中从创建到销毁经历了若干个阶段,在每一个阶段都可以针对Spring如何管理Bean进行个性化定制. 正如你所见,在Bean 准备就绪之前,Bean 工厂执行了若干启动步骤. Spring 对Bean 进行实例化. Spring 将值和Bean 的引用注入进Bean 对应的属性中. 如果Bean 实现了BeanNameAware接口,Spring 将Bean的ID传递给setBeanName() 接口方法. 如果Bean 实现了BeanFactory

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

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

Spring 中 ApplicationContext 和 BeanFactory 的区别,以及 Spring bean 作用域

//从ApplicationContext 中取 bean ApplicationContext ac = new ClassPathXmlApplicationContext ( "com/hsp/beans.xml" ) ; ac.getBean("beanId"); 当我们去实例化beans.xml,该文件中配置的 bean 就被实例化(不论你用还是不用,bean对象都在那),而且该对象是singleton单例的.(每个bean都有scope属性,可以人为的设

spring中bean的作用域

Spring中bean的作用域可以在xml配置文件(一般叫bean.xml或ApplicationContext.xml)中通过scope属性进行指定. 在Spring中,bean对象可以有多种作用域 singletion 默认的,每个IOC容器只创建一个Bean实例 prototype每次请求创建一个Bean实例 request每次http请求创建一个实例 session每次会话创建一个实例 globalsession每个全局Http请求创建一个实例

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

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

Spring Bean的生命周期,《Spring 实战》书中的官方说法

连着两天的面试 ,都问到了 Spring 的Bean的生命周期,其中还包括 昨晚一波阿里的电话面试.这里找到了Spring 实战中的官方说法.希望各位要面试的小伙伴记住,以后有可能,或者是有时间 去看看源码最好(也包括我自己).哈哈 Bean 的生命周期 在传统的Java应用中,bean的生命周期很简单.使用Java 关键字 new 进行bean 实例化,然后该 bean 就可以使用了.一旦该bean 不再被使用,则由 java 自动进行垃圾回收. 相比之下,Spring 容器中的 bean 的