• Spring IOC


    Spring容器管理的bean在默认情况下是单例的,即一个bean只会创建一个对象,存在map中,之后无论获取多少次该bean,都返回同一个对象。

    Spring默认采用单例方式,减少了对象的创建,从而减少了内存的消耗。

    但是在实际开发中是存在多例的需求的,Spring也提供了选项可以将bean设置为多例模式。

    <?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-3.2.xsd"
        >
        
        <!-- 
         scope属性控制当前bean的创建模式:
         singleton:则当前bean处在单例模式中,默认就是此模式
         prototype:则当前bean处在多例模式中
        -->
        
        <bean id="cart" class="cn.tedu.beans.Cart" scope="prototype"></bean>
        
    </beans>
        @Test
        /**
         * SpringIOC 单例 多例
         */
        public void test8(){
            /*
                <bean id="cart" class="cn.tedu.beans.Cart" scope="prototype"></bean>
             */
            ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
            Cart zsfcart = (Cart) context.getBean("cart");
            Cart zwgcart = (Cart) context.getBean("cart");
            System.out.println(zsfcart);
            System.out.println(zwgcart);
        }

    结果:

    Cart init...
    Cart init...
    cn.tedu.beans.Cart@28787c16
    cn.tedu.beans.Cart@7e1a9d1b

    bean在单例模式下的生命周期:

    bean在单例模式下,spring容器启动时解析xml发现该bean标签后,直接创建该bean的对象存入内部map中保存,此后无论调用多少次getBean()获取该bean都是从map中获取该对象返回,一直是一个对象。此对象一直被Spring容器持有,直到容器退出时,随着容器的退出对象被销毁。

    bean在多例模式下的生命周期:

    bean在多例模式下,spring容器启动时解析xml发现改bean标签后,只是将该bean进行管理,并不会创建对象,此后每次使用 getBean()获取该bean时,spring都会重新创建该对象返回,每次都是一个新的对象。这个对象spring容器并不会持有,什么销毁取决于使用该对象的用户自己什么时候销毁该对象

  • 相关阅读:
    玩玩微信公众号Java版之一:配置微信公众平台服务器信息
    Centos6.5网络配置
    Java调用XML的方法:DocumentBuilderFactory
    JDK动态代理的简单理解
    日志组件logback的介绍及配置使用方法
    Win7-64位PowerDesigner下MySQLODBC驱动问题
    为什么要使用SLF4J而不是Log4J
    plsql 不修改tnsnames.ora文件
    oracle创建表空间
    Linux系统下安装jdk1.8
  • 原文地址:https://www.cnblogs.com/chuijingjing/p/9784896.html
Copyright © 2020-2023  润新知