spring——bean的作用域

白熊      2022-05-08     711

关键词:

Spring中Bean的作用域有五种,分别是singleton、prototype、request、session、globalSession。其中request、session、globalSession这三个作用域只有在web开发中才会使用到。

当在 Spring 中定义一个bean时,你必须声明该 bean 的作用域的选项,若没有声明则默认作用域是singleton。

 

1 singleton 该作用域将 bean 的定义的限制在每一个 Spring IoC 容器中的一个单一实例。

*使用:什么都不做,默认就是单例模式,但是你也可以显示的加一个scope,例如:

<bean id="user" class="com.zhbit.pojo.User" scope="singleton"/>

如果你还是不明白什么是单例模式,那就举个例子来说明:

    @Test
    public void test(){
        ApplicationContext context = new ClassPathXmlApplicationContext("beans2.xml");
        User user = context.getBean("user", User.class);
        User user2 = context.getBean("user", User.class);
        System.out.println(user==user2);
    }

运行结果:

 

 

输出结果为true。证明了user和user2是同一个对象!

结论:只要bean的作用域是singleton ,getBean()方法中参数用的是同一个bean的id,则实例化的就是对象就是同一个。

 

2 prototype,在每次请求获取Bean的时候,都会创建一个新的实例,它在容器初始化的时候不会创建实例,采用的是延迟加载的形式注入Bean,当你使用的时候,才会进行实例化,每次实例化获取的对象都不是同一个 。
*使用:
   <bean id="user" class="com.kuang.pojo.User" scope="prototype"/>

 举例证明:

    @Test
    public void test(){
        ApplicationContext context = new ClassPathXmlApplicationContext("beans2.xml");
        User user = context.getBean("user", User.class);
        User user2 = context.getBean("user", User.class);
        System.out.println(user==user2);
    }
}

 

运行结果:

 

输出结果为false,证明 user和user2不是同一个对象。

 

3 request,在每一次http请求时会创建一个实例,该实例仅在当前http request有效
4 session,在每一次http请求时会创建一个实例,该实例仅在当前http session有效
5 globalSession,全局Session,供不同的portlet共享,portlet好像是类似于servlet的Web组件

spring中bean的作用域

Spring中bean的作用域可以在xml配置文件(一般叫bean.xml或ApplicationContext.xml)中通过scope属性进行指定。 在Spring中,bean对象可以有多种作用域   singletion默认的,每个IOC容器只创建一个Bean实例   prototype每次... 查看详情

spring之bean的作用域

...tingthespiritofopensource,Spreadingtechnologyknowledge;)二bean的作用域spring定义了多种bean的作用域,常用的4种如下:单例(Singleton):在整个应用中,只创建bean的一个实例。原型(Prototype):每次注入或者通过Spring应用上下文获 查看详情

springbean作用域

Bean的作用域当在Spring中定义一个bean时,你必须声明该bean的作用域的选项。例如,为了强制Spring在每次需要时都产生一个新的bean实例,你应该声明bean的作用域的属性为prototype。同理,如果你想让Spring在每次需要时都返回同一个b... 查看详情

8--深入使用spring--2...2指定bean的作用域

      8.2.2指定Bean的作用域        当使用XML配置方式来配置Bean实例时,可以通过scope来指定Bean实例的作用域,没有指定scope属性的Bean实例作用域默认是singleton。        当采用零配置方式来管理Bean实... 查看详情

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

spring中bean的五种作用域当通过spring容器创建一个Bean实例时,不仅可以完成Bean实例的实例化,还可以为Bean指定特定的作用域。Spring支持如下5种作用域:singleton:单例模式,在整个SpringIoC容器中,使用singleton定义的Bean将只有一个... 查看详情

spring中bean的五个作用域

当通过spring容器创建一个Bean实例时,不仅可以完成Bean实例的实例化,还可以为Bean指定特定的作用域。Spring支持如下5种作用域:singleton:单例模式,在整个SpringIoC容器中,使用singleton定义的Bean将只有一个实例prototype:原型模式... 查看详情

spring中bean的作用域属性

 当一个bean的作用域设置为singleton,那么springIOC容器中只会存在一个共享的bean实例,并且所有对bean的请求,只要id与该bean定义相匹配,则只会返回bean的同一实例。换言之,当把一个bean定义设置为singleton作用域时,SpringIOC容器... 查看详情

spring配置文件中能够用到的bean的作用域有哪些

...ingleton作用域:当把一个bean定义设置为singleton作用域是,springioc容器中只会存在一个共享的bean实例,并且所有对bean的请求,只要id与该bean定义相匹配,则只会返回该bean的同一实例。值得强调的是singleton作用域是spring中的缺省作... 查看详情

spring中bean的作用域(代码片段)

1:和变量一样,bean也有作用域,spring中我们可以为bean指定作用域:<bean id="" class=""  scope="....">2:作用域的种类singleton:单例模式,在spring中只有一个实例 查看详情

spring:玩转bean的作用域和自动装配!

一、bean的作用域 在Spring中,那些组成应用程序的主体及由SpringIoC容器所管理的对象,被称之为bean。简单地讲,bean就是由IoC容器初始化、装配及管理的对象.实体类:publicclassPerson{privateStringname;privateintage;privateStringlike;privateString... 查看详情

spring之bean的作用域与生命周期

在前面博客中提到容器启动获得BeanDefinition对象中有一个scope属性。该属性控制着bean对象的作用域。本章节介绍Bean的作用域及生命周期,了解bean是怎么来的又怎么没的。一、Bean的作用域在Bean容器启动会读取bean的xml配置文件,... 查看详情

spring核心技术——spring中bean的作用域

前文概述了Spring的容器,Bean,以及依赖的一些信息,本文将描述一下Bean的作用域Bean的作用域当开发者定义Bean的时候,同时也会定义了该如何创建Bean实例。这些具体创建的过程是很重要的,因为只有通过对这... 查看详情

spring之bean的作用域

Car.javapackagecom.gong.spring.beans.autowire;publicclassCar{publicCar(){}publicCar(Stringname){this.name=name;}privateStringname;publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.n 查看详情

spring框架学习----bean作用域(代码片段)

文章目录Spring框架学习(六)----Bean作用域一、singleton(单例模式)二、protoType(原型模式)Spring框架学习(六)----Bean作用域  经过前面的学习,我们可以知道bean是存在作用域的。  从spring的官方文档中发现sp... 查看详情

spring课程spring入门篇3-1springbean装配(上)之bean的配置项及作用域

本节主要讲了四大块1    bean的作用域2    bean作用域代码演练3    单例 多例应用场景4    bean的配置项   1    bean的作用域2    bean作用域代码演练3    单例 多例应用场景4 ... 查看详情

spring 组件和 bean 的作用域有啥区别? [复制]

】spring组件和bean的作用域有啥区别?[复制]【英文标题】:Whatisthedifferencebetweenspringcomponentandbean\'sscope?[duplicate]spring组件和bean的作用域有什么区别?[复制]【发布时间】:2019-03-2608:11:20【问题描述】:组件通过@Component注解用于类... 查看详情

聊聊spring中bean的作用域(代码片段)

前言今天分享一下springbean的作用域,理解bean的作用域能够在使用过程中避免一些问题,bean的作用域也是springbean创建过程中一个重要的点。Springbean的作用域类型singleton(单例模式):在整个应用程序的生命周期中,只创建一个B... 查看详情

spring中bean的作用域

   在Spring中,那些组成应用程序的主体及由SpringIoC容器所管理的对象,被称之为bean。简单地讲,bean就是由IoC容器初始化、装配及管理的对象,除此之外,bean就与应用程序中的其他对象没有什么区别了。而bean的定义... 查看详情