Spring简明分析Bean作用域

 更新时间:2022年07月04日 09:23:56   作者:RAIN 7  
scope用来声明容器中的对象所应该处的限定场景或者说该对象的存活时间,即容器在对象进入其 相应的scope之前,生成并装配这些对象,在该对象不再处于这些scope的限定之后,容器通常会销毁这些对象,这篇文章主要介绍了Spring中的Bean作用域,需要的朋友可以参考下

Bean作用域

  经过前面的学习,我们可以知道bean是存在作用域的。

  从spring的官方文档中发现spring支持六种作用域,我们只需要重点认识singleton、protoType即可,后面的作用域都是于web框架相关的。

一、singleton(单例模式)

  就和图中的一样,如果bean的作用域为singleton,那么在IOC容器中只有每个bean只有一个唯一的实例被创建。

我们通过代码来认识一下,bean的单例模式

bean的作用域默认是singleton,我们也可以手动通过在xml的bean中scope进行设置。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="user" class="pojo.User" scope="singleton"/>
</beans>

根据同一个bean 获取两次实例,查看实例是否相同

    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
        User user1 = context.getBean("user", User.class);
        User user2 = context.getBean("user",User.class);
        System.out.println(user1==user2);
    }

查看运行结果

说明 这个Bean的作用域是单例模式,根据这个bean只能创建一个唯一的实例。

二、protoType(原型模式)

就和图中的一样,如果bean的作用域为protoType,那么在IOC容器中每个bean都可以创建多个实例。

我们通过代码来认识一下,bean的原型模式

bean的作用域默认是singleton,我们也可以手动通过在xml的bean中scope进行设置成 protoType。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="user" class="pojo.User" scope="prototype"/>
</beans>

根据同一个bean 获取两次实例,查看实例是否相同

    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
        User user1 = context.getBean("user", User.class);
        User user2 = context.getBean("user",User.class);
        System.out.println(user1==user2);
    }

查看运行结果

说明了当设置bean为 protoType时,一个bean可以创建多个不同的实例。

到此这篇关于Spring简明分析Bean作用域的文章就介绍到这了,更多相关Spring Bean作用域内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 使用springboot打包成zip部署,并实现优雅停机

    使用springboot打包成zip部署,并实现优雅停机

    这篇文章主要介绍了使用springboot打包成zip部署,并实现优雅停机,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • MyBatis-plus的五种批量插入方式对比分析

    MyBatis-plus的五种批量插入方式对比分析

    本文主要介绍了MyBatis-plus的五种批量插入方式对比分析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • java使用Memcached简单教程

    java使用Memcached简单教程

    本文主要记录Memcached的一些基本使用和简单的Monitor,大家参考使用吧
    2013-12-12
  • 利用Java生成带有文字的二维码

    利用Java生成带有文字的二维码

    二维码在我们现在的生活中可谓是随处可见,这篇文章主要是介绍如何利用Java生成带有文字的二维码,对大家学习Java具有一定的参考借鉴价值。有需要的朋友们下面来一起看看吧。
    2016-09-09
  • Java中控制多线程执行顺序的8种方法

    Java中控制多线程执行顺序的8种方法

    在并发编程中,控制线程执行顺序是一个常见且重要的需求,Java提供了多种机制来实现线程顺序控制,本文将全面介绍8种核心方法,涵盖从基础到高级的各种场景需求,需要的朋友可以参考下
    2025-03-03
  • 基于Java回顾之集合的总结概述

    基于Java回顾之集合的总结概述

    在这篇文章里,我们关注Java中的集合(Collection)。集合是编程语言中基础的一部分,Java自JDK早期,就引入了Java Collection Framework。设计JCF的那个人,后来还写了一本书,叫《Effective Java》
    2013-05-05
  • java框架基础之SPI机制实现及源码解析

    java框架基础之SPI机制实现及源码解析

    这篇文章主要为大家介绍了java框架基础之SPI机制实现及源码解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • SpringCloud-Config分布式配置代码示例

    SpringCloud-Config分布式配置代码示例

    这篇文章主要介绍了SpringCloud-Config分布式配置代码示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05
  • MyBatis利用MyCat实现多租户的简单思路分享

    MyBatis利用MyCat实现多租户的简单思路分享

    这篇文章主要给大家介绍了关于MyBatis利用MyCat实现多租户的简单思路的相关资料,文中的多租户是基于多数据库进行实现的,数据是通过不同数据库进行隔离,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-06-06
  • Mybatis 动态sql if 判读条件等于一个数字的案例

    Mybatis 动态sql if 判读条件等于一个数字的案例

    这篇文章主要介绍了Mybatis 动态sql if 判读条件等于一个数字的案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11

最新评论