spring之bean的作用域

知识追寻者[同公众号]      2022-05-04     191

关键词:

一 前言

五一了来一篇轻松的文章;关注公众号:知识追寻者;

知识追寻者(Inheriting the spirit of open source, Spreading technology knowledge;)

二 bean的作用域

spring定义了多种bean的作用域,常用的4种如下:

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

在spring容器中由spring管理的bean默认都是单例;

2.2 单例示例

使用@Scope注解指定作用域类型;

单例即一个对象仅有一个实例;

被单类

/**
 * @Author lsc
 * <p> </p>
 */
@Scope(ConfigurableBeanFactory.SCOPE_SINGLETON)
// 等同于@Scope("singleton")
@Component
public class Sheet {

}

配置类

/**
 * @Author lsc
 * <p> </p>
 */
@Configuration
@ComponentScan
public class Config {
}

测试

    public static void main(String[] args) {
        AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(Config.class);
        // 单例测试
        Sheet sheetA = context.getBean(Sheet.class);
        Sheet sheetB = context.getBean(Sheet.class);
        // sheetA = sheetB? true
        System.out.println("sheetA = sheetB? " + sheetA.equals(sheetB));
    }

2.2 原型示例

原型就是多例,一个对象有多个实例;

棉类

/**
 * @Author lsc
 * <p> </p>
 */
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
@Component
public class Cotton {
}

测试

    public static void main(String[] args) {
        AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(Config.class);
        // 原型 多例测试
        Cotton cottonA = context.getBean(Cotton.class);
        Cotton cottonB = context.getBean(Cotton.class);
        //  cottonA 与 cottonB 是否相等:false
        System.out.println("cottonA 与 cottonB 是否相等:" + cottonA.equals(cottonB));
        context.close();
    }

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

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

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

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

spring总结之二(bean作用域依赖注入)(代码片段)

###Bean的作用域:单例(singleton),多例(prototype)1.单例模式:表示在任何地方使用对象,总是一个(对象是唯一的)。(笔面试重点)饿汉式publicclassKingprivatefinalstaticKingking=newKing();privateKing()publicstaticKinggetKing()returnking;懒汉式publiccla 查看详情

javaweb学习笔记之spring中bean的作用域

Bean简介:在Spring中,那些组成你应用程序的主体(backbone)及由SpringIoC容器所管理的对象,被称之为bean。简单地讲,bean就是由Spring容器初始化、装配及管理的对象,除此之外,bean就与应用程序中的其他对象... 查看详情

第三章di之3.4bean的作用域(捌)

...对象程序设计中一般指对象或变量之间的可见范围。而在Spring容器中是指其创建的Bean对象相对于其他Bean对象的请求可见范围。Spring提供“singleton”和“prototype”两种基本作用域,另外提供“request”、“session” 查看详情

引点科技私房菜专栏之spring-bean生命周期和作用域以及实现方式

SpringBean生命周期和作用域以及实现方式文章目录SpringBean生命周期和作用域以及实现方式生命周期初始化实例化前指定初始化方法实现`InitializingBean`接口销毁使用`destroy-method`方法实现`DisposableBean`接口`SpringBean`的作用域配置示例 查看详情

spring之scope作用域

spring中,bean的作用域有五种类型:默认是单例模式,    singleton    prototype    request    session    globalsession配置作用域 查看详情

spring——bean的作用域

Spring中Bean的作用域有五种,分别是singleton、prototype、request、session、globalSession。其中request、session、globalSession这三个作用域只有在web开发中才会使用到。当在Spring中定义一个bean时,你必须声明该bean的作用域的选项,若没有声明... 查看详情

spring07----bean的作用域

...对象程序设计中一般指对象或变量之间的可见范围。而在Spring容器中是指其创建的Bean对象相对于其他Bean对象的请求可见范围。Spring提供“singleton”和“prototype”两种基本作用域,另外提供“request”、“session”、“globalsession”... 查看详情

spring中bean的作用域

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

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... 查看详情