官方文档 翻译

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 的后续的请求和引用都返回缓存的对象。

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 不会持有任何对话状态;仅仅是对作者简单对单例图的重用。

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

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

 

spring 容器技术入门的更多相关文章

  1. Spring容器技术内幕之BeanWrapper类介绍

    引言 org.springframework.beans.BeanWrapper是Spring框架中重要的组件类.BeanWrapper相当于一个代理器,Spring委托BeanWrapperwanc ...

  2. Spring容器技术内幕之BeanDefinition类介绍

    引言 org.springframework.beans.factory.config.BeanDefinition是配置文件< bean >元素标签在容器中地内部表示.< bean ...

  3. Spring容器技术内幕之内部工作机制

    引言 Spring容器就像一台构造精妙的机器,我们通过配置文件向机器传达控制信息,机器就能够按照设定的模式工作.如果将Spring容器比作一辆车,那么可以将BeanFactory看成汽车的发动机,而A ...

  4. docker第一篇 容器技术入门

    Container 容器是一种基础工具,泛指任何可以容纳其它物品的工具. Linux Namespaces (docker容器技术主要是通过6个隔离技术来实现) namespace    系统调用参数 ...

  5. Docker容器技术入门

    独立容器分开的条件: 1.Namespace命名空间 1.主机名和域名,UTS 2.文件系统,mount 3.进程间通信,IPC 4.独立的进程树PID 5.独立的用户User 6.独立的IP地址tc ...

  6. docker技术入门(2)

    接上一篇文章 [容器技术]Docker容器技术入门(一) 今天接着上次聊一聊有关Docker网络.数据存储相关的技术点 Docker网络模式 01 Dokcer 通过使用 Linux 桥接提供容器之间 ...

  7. docker容器技术基础入门

    目录 docker容器技术基础入门 容器(Container) 传统虚拟化与容器的区别 Linux容器技术 Linux Namespaces CGroups LXC docker基本概念 docker ...

  8. Docker 学习1 容器技术基础入门

    一.虚拟化 1.主机级别虚拟化(两种) a.类型一虚拟化:在硬件上直接安装hyper-ver,然后再安装虚拟机 1).操作系统就两棵树:进程树,文件系统树. 2).一个内核只能有一个root b.类型 ...

  9. 1.docker容器技术基础入门

    内容来自:https://www.cnblogs.com/marility/p/10215062.html https://blog.51cto.com/gouyc/2310785?source=dr ...

随机推荐

  1. poj1236 强连通缩点

    Network of Schools Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 15211   Accepted: 60 ...

  2. 数据库连接池的选择 Druid

    我先说说数据库连接 数据库大家都不陌生,从名字就能看出来它是「存放数据的仓库」,那我们怎么去「仓库」取东西呢?当然需要钥匙啦!这就是我们的数据库用户名.密码了,然后我们就可以打开门去任意的存取东西了. ...

  3. Web前端性能优化教程09:图像和Cookie优化

    本文是Web前端性能优化系列文章中的第九篇,主要讲述内容:图像和Cookie优化.完整教程可查看:  一. 图像优化 图像基础知识 gif: 适用于动画效果,例如提示的滚动条图案 jpg: 是一种使用 ...

  4. 【HDU 5835】Danganronpa(分配礼物)

    10种礼物,每种有ai个,每个小朋友分两个礼物,其中普通礼物要求相邻两人的不能一样,求最多分给几个小朋友. sum/2是最多的情况.什么时候发不了那么多,就是当max很大,无论怎么发,都发不完max. ...

  5. 【bzoj3295】 Cqoi2011—动态逆序对

    http://www.lydsy.com/JudgeOnline/problem.php?id=3295 (题目链接) 题意 给出某种排列,按照某种顺序依次删除m个数,在每次删除一个数前统计序列中逆序 ...

  6. Linux修改密码passwd用法

    语法: passwd [-k] [-l] [-u [-f]] [-d] [-S] [username] 必要参数:-d 删除密码-f 强制执行-k 更新只能发送在过期之后-l 停止账号使用-S 显示密 ...

  7. app 摇一摇功能

    1.重写canBecomeFirstResponder ,并返回YES -(BOOL)canBecomeFirstResponder{ return YES; } 2.重写UIResponder的三个 ...

  8. dedeCMS /plus/ad_js.php、/plus/mytag_js.php Vul Via Injecting PHP Code By /plus/download.php Into DB && /include/dedesql.class.php

    目录 . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述 对于这个漏洞,我们可以简单概括如下 . "/plus/download. ...

  9. ARPSpoofing教程(四) - 捕获并分析数据包

    本程序的主要目标是展示如何解析所捕获的数据包的协议首部. 这个程序可以称为UDPdump,打印一些网络上传输的UDP数据的信息. 1: #include"pcap.h" 2: ty ...

  10. 【Beta】Scrum01

    Info 时间:2016.11.26 21:30 时长:10min 地点:大运村1号公寓5楼楼道 类型:日常Scrum会议 NXT:2016.11.28 21:30 Task Report Name ...