zoukankan      html  css  js  c++  java
  • spring 容器技术入门

    官方文档 翻译

    https://waylau.gitbooks.io/spring-framework-4-reference/content/III.%20Core%20Technologies/Container%20overview.html

    这个更全一些 

    http://spring.cndocs.tk/beans.html#beans-dependencies

    4.5.1 单例范围

    仅仅共享被管理的 bean 的一个实例,所有使用一个或多个 id 来匹配 bean 的结果对 bean 请求,由 Spring 容器返回指定 bean 的实例。

    另外一种方式,当你定义一个范围是单例的 bean 后,Spring 的 IoC 容器通过 bean 的定 义创建了这个对象的一个实例。这个独立的实例存储在单例 bean 的缓存中,所有对这个命 名 bean 的后续的请求和引用都返回缓存的对象。

    image

    Spring 中对单例 bean 的概念和四人帮(Gang of Four,GoF)设计模式书中定义的单例 模式是不同的。GoF 的单例硬编码了对象的范围,也就是特定的类仅仅能有一个实例被每一 个 ClassLoader 来创建。Spring 中单例 bean 的范围,是对每一个容器和 bean 来说的。这 就意味着在独立的 Spring 容器中,对一个特定的类创建了一个 bean,那么 Spring 容器通过 bean 的定义仅仅创建这个类的一个实例。在 Spring 中,单例范围是默认的范围。要在 XML 中定义单例的 bean,可以按照如下示例来编写:

    <bean id="accountService" class="com.foo.DefaultAccountService"/>
    <!-- 尽管是冗余的(单例范围是默认的),下面的bean定义和它是等价的 -->
    <bean id="accountService" class="com.foo.DefaultAccountService" scope="singleton"/>
    

    4.5.2 原型范围

    非单例,原型范围的 bean 就是当每次对指定 bean 进行请求时,一个新的 bean 的实例 就会创建。也就是说,bean 被注入到其它 bean 或是在容器中通过 getBean()方法来请求时就 会创建新的 bean 实例。作为一项规则,对所有有状态的 bean 使用原型范围,而对于无状 态的 bean 使用单例范围。

    下图讲述了 Spring 的原型范围。数据访问对象(DAO)通常不是配置成原型的,因为典型的 DAO 不会持有任何对话状态;仅仅是对作者简单对单例图的重用。

    image

    下面的示例在 XML 中定义了原型范围的 bean:

    <!-- 使用spring-beans-2.0.dtd -->
    <bean id="accountService" class="com.foo.DefaultAccountService" scope="prototype"/>
    

     

  • 相关阅读:
    centos7 升级 python3
    宿主机休眠后,虚拟机网络ping不通网关
    给微信群和朋友圈里发长视频的方法
    在word2019中使用latex
    anki2.1中使用latex,使用 MathJax 渲染latex格式的数学公式,化学公式
    如何用GoldWave批量删除mp3文件开头65秒?
    一款 CentOS-7 个性化配置脚本
    算法及算法分析
    博客园markdown使用LaTeX数学公式
    数据结构与算法
  • 原文地址:https://www.cnblogs.com/diegodu/p/6008316.html
Copyright © 2011-2022 走看看