zoukankan      html  css  js  c++  java
  • (II)第七节:bean 的作用域

    Bean 的作用域

      在 Spring 中,可以在 <bean> 元素的 scope 属性里设置 bean 的作用域,以决定这个 bean 是单实例的还是多实例的。
     
      默认情况下,Spring 只为每个在 IOC 容器里声明的 bean 创建唯一一个实例(Spring 中默认是单例的 bean),整个 IOC 容器范围内都能共享该实例;
      所有后续的 getBean() 调用和  bean 引用都将返回这个唯一的 bean 实例,该作用域被称为 singleton,它是所有 bean 的默认作用域。
     
     
      scope 用于设置 bean 的作用域,其取值有 singleton | prototype | request | session
     
    singleton:单例,唯一实例,默认的
    prototype:原型,多例的(Java中默认情况)
    request:在web环境下,同义词请求创建一个Bean实例,在一次请求中创建一个 bean 
    session:在web环境下,同义词请求创建一个Bean实例,在一次会话中创建一个 bean

    singleton:单实例的,默认的

      (1)在容器启动完成之前就已经创建好对象,保存在容器中了;

      (2)任何获取都是获取之前创建好的那个对象;

    prototype:多实例的

      (1)容器启动默认不会去创建多实例 bean;

      (2)获取的时候创建多实例 bean;

      (3)每次获取都会创建一个新的对象;

    注意
        当 bean 的作用域为单例时,Spring 会在 IOC 容器初始化时就创建 bean 的对象实例;
        而当 bean 的作用域为 prototype 时,IOC 容器会在获取 bean 的实例时创建 bean 的实例对象(即在使用 bean 时,才进行创建实例对象)
     
      配置bean 的作用域:
        <bean id="book01" class="com.njf.spring.bean.Book" scope="singleton"></bean>
    
        <bean id="book02" class="com.njf.spring.bean.Book" scope="prototype"></bean>
     
      测试代码:
        @Test
        public void test4() {
            ApplicationContext ioc = new ClassPathXmlApplicationContext("ioc3.xml");
    
            Object book01 = ioc.getBean("book01");
            Object _book01 = ioc.getBean("book01");
            System.out.println(book01 == _book01); //true
    
            Object book02 = ioc.getBean("book02");
            Object _book02 = ioc.getBean("book02");
            System.out.println(book02 == _book02); //false
        }
     
     
     
     
  • 相关阅读:
    The Quad
    将OrCAD Capture CIS的设计文件(.dsn)导入到PADS Logic VX.2.3
    OrCAD Capture CIS 16.6 将版本16.6的设计文件另存为版本16.2的设计文件
    Eclipse IDE 添加jar包到Java工程中
    PADS Logic VX.2.3 修改软件界面语言
    切换Allegro PCB Editor
    Allegro PCB Design GXL (legacy) 将brd文件另存为低版本文件
    Allegro PCB Design GXL (legacy) 设置自动保存brd文件
    Could not create an acl object: Role '16'
    windows 下apache开启FastCGI
  • 原文地址:https://www.cnblogs.com/niujifei/p/15414920.html
Copyright © 2011-2022 走看看