zoukankan      html  css  js  c++  java
  • Spring——Bean的作用域

    Spring中Bean的作用域有五种,分别是singleton、prototype、request、session、globalSession。其中request、session、globalSession这三个作用域只有在web开发中才会使用到。

    当在 Spring 中定义一个bean时,你必须声明该 bean 的作用域的选项,若没有声明则默认作用域是singleton。

    1 singleton 该作用域将 bean 的定义的限制在每一个 Spring IoC 容器中的一个单一实例。

    *使用:什么都不做,默认就是单例模式,但是你也可以显示的加一个scope,例如:

    <bean id="user" class="com.zhbit.pojo.User" scope="singleton"/>

    如果你还是不明白什么是单例模式,那就举个例子来说明:

        @Test
        public void test(){
            ApplicationContext context = new ClassPathXmlApplicationContext("beans2.xml");
            User user = context.getBean("user", User.class);
            User user2 = context.getBean("user", User.class);
            System.out.println(user==user2);
        }

    运行结果:

    输出结果为true。证明了user和user2是同一个对象!

    结论:只要bean的作用域是singleton ,getBean()方法中参数用的是同一个bean的id,则实例化的就是对象就是同一个。

    2 prototype,在每次请求获取Bean的时候,都会创建一个新的实例,它在容器初始化的时候不会创建实例,采用的是延迟加载的形式注入Bean,当你使用的时候,才会进行实例化,每次实例化获取的对象都不是同一个 。
    *使用:
       <bean id="user" class="com.kuang.pojo.User" scope="prototype"/>

     举例证明:

        @Test
        public void test(){
            ApplicationContext context = new ClassPathXmlApplicationContext("beans2.xml");
            User user = context.getBean("user", User.class);
            User user2 = context.getBean("user", User.class);
            System.out.println(user==user2);
        }
    }
    运行结果:

    输出结果为false,证明 user和user2不是同一个对象。

    3 request,在每一次http请求时会创建一个实例,该实例仅在当前http request有效
    4 session,在每一次http请求时会创建一个实例,该实例仅在当前http session有效
    5 globalSession,全局Session,供不同的portlet共享,portlet好像是类似于servlet的Web组件
  • 相关阅读:
    ORACLE NOLOGGING研究
    由2013星光大道总决赛同步程序猿怎样成功?
    configure: error: mysql configure failed. Please check config.log for more information.
    The 2014 ACM-ICPC Asia Mudanjiang Regional Contest(2014牡丹江区域赛)
    about service in android
    极客标签互动课程系列 - Javascript生成SVG动画素描特效
    sql -- 移除数据中的换行符和回车符
    前端project师必需知识点
    spring装配集合
    【java项目实践】具体解释Ajax工作原理以及实现异步验证username是否存在+源代码下载(java版)
  • 原文地址:https://www.cnblogs.com/bear7/p/12530699.html
Copyright © 2011-2022 走看看