zoukankan      html  css  js  c++  java
  • Spring学习记录(五)---bean的作用域scope

    作用域:
    singleton:单例,整个应用中只创建一个实例(默认)

    prototype:原型,每次注入时都新建一个实例

    session:会话,每个会话创建一个实例

    request:请求,每个请求创建一个实例

    默认情况下,bean都是单例的,在下面这样时初始化,调用各个bean的构造函数

    1  <bean id="person" class="com.guigu.spring.autowire.Person"
    2      p:name="Tom" ></bean>
    3 //相当于:
    4  <bean id="person" class="com.guigu.spring.autowire.Person"
    5      p:name="Tom" scope="singleton"></bean>
    1   ApplicationContext ctx = new ClassPathXmlApplicationContext("scope.xml");  //这里初始化,调用bean的构造函数
    2   Person person1 = (Person) ctx.getBean("person"); 
    3   Person person2 = (Person) ctx.getBean("person"); 
    4   system.out.println(person1 == person2);  //结果:true

     在第一行时,就调用了构造函数,实例化了对象,并且只有一个对象。 person1 和person2其实是同一个对象

    若是原型

    1   <bean id="person" class="com.guigu.spring.autowire.Person"
    2       p:name="Tom" scope="prototype"></bean>

     同样,两次调用,结果会是false

    1    ApplicationContext ctx = new ClassPathXmlApplicationContext("scope.xml");  //这里初始化,但此时不创建实例
    2    Person person1 = (Person) ctx.getBean("person"); 
    3    Person person2 = (Person) ctx.getBean("person"); 
    4    system.out.println(person1 == person2);  //结果:false

     prototype规定,容器初始化时,不会自动创建实例,而是调用它时才创建。调用了两次,就创建了两个实例。

    session:在一哥session会话中,是同一个bean,不同session就是不同bean

    request:每一个HTTP请求生成一个新的bean

  • 相关阅读:
    Longest Mountain in Array 数组中的最长山脉
    css 解决 图片 底部 3像素问题
    获取当前年月日2020-09-30格式
    vue + elememt ui table 实现滚屏效果
    滚动字
    layui 之监听 select 的变化
    正则匹配非汉字
    layui form里的select元素动态赋值无效
    layui 之 弹框重新打开 upload无效
    GPS坐标转百度坐标
  • 原文地址:https://www.cnblogs.com/ooooevan/p/5801389.html
Copyright © 2011-2022 走看看