zoukankan      html  css  js  c++  java
  • Spring入门---Spring Bean的作用域【第一天】

    一、Spring Bean的作用域:

    Spring2.0之前Bean只有两种作用域,即单例【singleton】和non-singleton(也成prototype)Spring2.0之后,增加了sessionrequestglobal session这三种专用于Web运用程序上下文的BeanSpring2.0之后对Bean的类型进行了重构,并设计出灵活的Bean支持,理论上可以有无数多种类型的Bean。可根据需要增加新的Bean类型,以满足实际运用的需求。

    (后续可学习如何重构新的Bean类型)

    1、singleton单实例:

    当一个bean的作用域设置为singleton,那么Spring IOC容器只会存在一个共享的Bean实例,并且所有对Bean的请求只要ID与该Bean定义相匹配,则只会返回Bean的同一实例。即该实例会存储在缓存中。

    配置:

    <bean id=”userdao” class=”test2.dao.UserDao” scope=”singleton”/>

    或者:

    <bean  id=”userdao” class=”test2.dao.UserDao” scope=”true”>

    UserDao bean1 = (UserDao)factory.getBean(“userdao”);

    UserDao bean2 = (UserDao)factory.getBean(“userdao”);

    bean1bean2的引用相同,每次使用getBean()不会重新产生一个实例。

    2、prototype多实例:

    每个容器中,一个Bean对应多个实例。prototype作用域部署的Bean,每一次请求(将其注入到另一个Bean中,或者以程序的方式调用Spring容器的getBean方法)都会产生一个新的Bean实例。

    配置:

    <bean id=”userdao” class=”test2.dao.UserDao” scope=”prototype”/>

    或者:

    <bean  id=”userdao” class=”test2.dao.UserDao” scope=”false”>

    UserDao bean1 = (UserDao)factory.getBean(“userdao”);

    UserDao bean2 = (UserDao)factory.getBean(“userdao”);

    3、request:

    request表示该针对每一次HTTP请求都会产生一个新的Bean,同时该Bean仅在当前HTTP request内有效。

    <bean id=”userdao” class=”test2.dao.UserDao” scope=”request”/>

    4、session:

    session的作用域表示该针对每一次HTTP请求都会产生一个新的Bean,同时该Bean仅在当前HTTP session内有效。

    <bean id=”userdao” class=”test2.dao.UserDao” scope=”session”/>

  • 相关阅读:
    sudo rm /var/cache/apt/archives/lock sudo rm /var/lib/dpkg/lock
    redis常用命令大全
    MySQL explain使用
    rabbitmq添加user及vhost
    Make sure you've included captcha.urls as explained in the INSTALLATION section on
    django.db.migrations.exceptions.InconsistentMigrationHistory: Migration admin.0001_initial is applie
    ARM实验5 —— 按键中断实验
    ARM实验4—按键轮询实验
    ARM实验3 ——串口实验
    ARM实验2 —— 蜂鸣器实验
  • 原文地址:https://www.cnblogs.com/ciscolee/p/10931910.html
Copyright © 2011-2022 走看看