• spring 的单例模式


    • singleton---单例模式

    单例模式,在spring 中其实是scope(作用范围)参数的缺省设定值
    每个bean定义只生成一个对象实例,每次getBean请求获得的都是此实例

    • 单例模式分为饿汉模式和懒汉模式
    饿汉模式 spring singleton的缺省是饿汉模式:启动容器时(即实例化容器时),为所有spring配置文件中定义的bean都生成一个实例
    懒汉模式 在第一个请求时才生成一个实例,以后的请求都调用这个实例
    spring singleton设置为懒汉模式:

    <beans
    default-lazy-init="true">



    • 另一种和singleton对应的scope值---prototype多实例模式

    调用getBean时,就new一个新实例

    • singleton和prototype的比较

    singleton

    xml配置文件:
    <bean id="dvdTypeDAO" class="com.machome.hibernate.impl.DvdTypeDAOImpl" />   
    测试代码:
            ctx = new ClassPathXmlApplicationContext("spring-hibernate-mysql.xml");
            DvdTypeDAO tDao1 = (DvdTypeDAO)ctx.getBean("dvdTypeDAO");
            DvdTypeDAO tDao2 = (DvdTypeDAO)ctx.getBean("dvdTypeDAO");
    运行:        
    true
    com.machome.hibernate.impl.DvdTypeDAOImpl@15b0333
    com.machome.hibernate.impl.DvdTypeDAOImpl@15b0333

    说明前后两次getBean()获得的是同一实例,说明spring缺省是单例


    prototype

    <bean id="dvdTypeDAO" class="com.machome.hibernate.impl.DvdTypeDAOImpl" scope="prototype" />
     
    执行同样的测试代码
    运行:
    false
    com.machome.hibernate.impl.DvdTypeDAOImpl@afae4a
    com.machome.hibernate.impl.DvdTypeDAOImpl@1db9852
    说明scope="prototype"后,每次getBean()的都是不同的新实例
  • 相关阅读:
    剑指 Offer 50. 第一个只出现一次的字符
    剑指 Offer 42. 连续子数组的最大和
    剑指 Offer 41. 数据流中的中位数
    剑指 Offer 40. 最小的k个数
    剑指 Offer 39. 数组中出现次数超过一半的数字
    剑指 Offer 38. 字符串的排列
    MySQL更改密码
    WPF中的MySQLHelper
    WPF多线程
    mysql-5.7.28-winx64(压缩包)安装教程
  • 原文地址:https://www.cnblogs.com/zydzyd/p/5629310.html
Copyright © 2020-2023  润新知