Spring、Bean 的作用域
Singleton作用域(默认)
当一个bean的作用域为singleton,那么Spring Ioc容器中只会存在一个共享的bean实例,并且所有对bean的请求,只要id与该bean定义相匹配,则只会返回bean的同一实例。也就是说,当把一个bean定义设置为singleton作用域时,Spring IoC容器只会创建该bean定义的唯一实例。这个单一实例会被存储到单例缓存中,并且所有针对该bean的后续请求和引用都将返回被缓存的对象实例。假如在单个Spring容器内定义了某个指定class的bean,那么Spring容器将会创建一个且仅有一个由该bean定义知道的类实例。Singleton作用域是Spring中的缺省作用域。要在XML中将bean定义成singleton。其配置:
@Test
public void test() {
ApplicationContext ac = new ClassPathXmlApplicationContext("beans.xml");
PersonIService personIService=(PersonIService)ac.getBean("personIService");
PersonIService personIService1=(PersonIService)ac.getBean("personIService");
System.out.println(personIService==personIService1);
}
结果:
Prototype作用域
Prototype作用域的bean会导致在每次对该bean请求(将其注入到另一个bean中,或者以程序的方式调用容器的getBean()方法)时都会创建一个新的bean实例,根据经验,对有状态的bean应该使用prototype作用域,而对无状态的bean则应该使用singleton作用域,要在XML中将bean定义成prototype,其配置:
@Test
public void test() {
ApplicationContext ac = new ClassPathXmlApplicationContext("beans.xml");
PersonIService personIService=(PersonIService)ac.getBean("personIService");
PersonIService personIService1=(PersonIService)ac.getBean("personIService");
System.out.println(personIService==personIService1);
}
Request 作用域
针对每次Http请求,Spring容器会根据userDaoImpl bean定义创建一个全新的UserDaoImpl bean实例,且该userDaoImpl bean实例仅在当前HTTP request内有效,因此可以根据需要放心的更改所建实例的内部状态,而其他请求中根据userDaoImpl bean定义创建的实例,将不会看到这些特定于某个请求的状态变化。当处理结束,request作用域的bean实例将销毁。
Session作用域
针对某个HTTP session,Spring容器会根据userDaoImpl bean定义创建一个全新的userDaoImpl bean实例,且该userDaoImpl bean仅在当前HTTP Session内有效。与request作用域一样,你可以根据需要放心的更改所创建实例的内部状态,而别的HTTP Session中根据userDaoImpl创建的实例,将不会看到这些特定于某个HTTP Session的状态变化。当HTTP
Sessison最终被废弃的时候,在该HTTP Session作用域内的bean也会被废弃掉。
Spring、Bean 的作用域的更多相关文章
- Spring Bean的作用域(转)
Spring Bean的作用域 .singleton [单例] eg:<bean id="personService" class="com.yinger.ser ...
- Spring bean的作用域以及生命周期
一.request与session的区别 request简介 request范围较小一些,只是一个请求. request对象的生命周期是针对一个客户端(说确切点就是一个浏览器应用程序)的一次请求,当请 ...
- spring bean 的作用域之间有什么区别
spring bean 的作用域之间有什么区别? spring容器中的bean可以分为五个范围.所有范围的名称都是说明的, 1.singleton:这种bean范围是默认的,这种范围确保不管接受到多个 ...
- spring bean 的作用域
spring bean 的作用域: 1.单例(singleton):默认是单例模式,也就是说不管给定的bean被注入到其他bean多少次,注入的都是同一个实例. 2.原型(prototype):每次注 ...
- Spring bean的作用域和生命周期
bean的作用域 1.singleton,prototype, web环境下:request,session,gloab session 2.通过scope="" 来进行配置 3. ...
- [跟我学spring][Bean的作用域]
Bean的作用域 什么是作用域呢?即“scope”,在面向对象程序设计中一般指对象或变量之间的可见范围.而在Spring容器中是指其创建的Bean对象相对于其他Bean对象的请求可见范围. Sprin ...
- Spring Bean的作用域类型
Bean的作用域类型 singleton :在Spring IOC容器中仅存在一个Bean实例,Bean以单实例的方式存在; prototype :每次从容器中调用Bean时,都返回一个新的实例,即每 ...
- spring bean的作用域和自动装配
1 Bean的作用域 l singleton单列:整个容器中只有一个对象实例,每次去访问都是访问同一个对象 默认是单列 l prototype原型: 每次获取bean都产生一个新的对象,比如Ac ...
- Spring Bean Scope (作用域)
singleton: 单例模式,针对每个spring容器,只有一个该类的实例被管理,每次调用此实例都是同一个对象被返回,所以适用于无状态bean.默认情况下,singleton作为spring容器中b ...
- Spring Bean的作用域以及lookup-method标签的使用
Spring Framework支持五种作用域,如下图所示: singleton:表示一个容器中只会存在一个bean实例,无论在多少个其他bean里面依赖singleton bean,整个容器都只会存 ...
随机推荐
- MySQLBackup 使用说明
001.mysqlbackup介绍: mysqlbackup是一个热备份工具.也就是说它不像mysqldump那样给表上一个全局锁,由于mysqldump上了这个锁,所以就造成客户端只能对 数据库进行 ...
- 从HCE的各种问题 讨论未来趋势
为了能让NFC手机支持NFC支付,维萨公司和万事达公司宣布了对HCE的研发,并且将很快推出最新的HCE规范.从2012年末,我一直在关注关于HCE的相关信息,其原因是由于我们公司参与了名为Simply ...
- Repeated meta-data items
B.2 Generating your own meta-data using the annotation processor You can easily generate your own co ...
- [Linux]shell编程基础/linux基础入门
声明执行程序 #!/bin/bash 用来告诉系统使用/bin/bash 程序来执行该脚本.譬如python 脚本,可以这样写: #!/usr/bin/python 赋值和引用 赋值公式: 变量名 ...
- C语言 EOF是什么?
Linux中,在新的一行的开头,按下Ctrl-D,就代表EOF(如果在一行的中间按下Ctrl-D,则表示输出"标准输入"的缓存区,所以这时必须按两次Ctrl-D):Windows中 ...
- 写一个将当前页面 URL 中的 get 参数解析成一个对象的方法。
function getQuery () { var args = {}; var query = window.location.search.substring(1); var pairs = q ...
- 新手学习.net编程计划-1
.NET是一个庞大的学习体系,对于新手来说会感觉无从下手.学习知识必须从入门的基础学起,才能更好地掌握.学习.net也是如此,最基础的莫过于了解.net平台,以及掌握.net的基础语法C#. 本计划是 ...
- bzoj 维护序列seq(双标记线段树)
Seq 维护序列seq Time Limit: 30 Sec Memory Limit: 64 MBSubmit: 4184 Solved: 1518[Submit][Status][Discus ...
- UVA - 10131Is Bigger Smarter?(DAG上的DP)
题目:UVA - 10131Is Bigger Smarter? (DAG) 题目大意:给出一群大象的体重和IQ.要求挑选最多的大象,组成一个序列.严格的体重递增,IQ递减的序列.输出最多的大象数目和 ...
- BPM7.5.1升级细节,万事开头难
背景:Linux5.9,BPM 7.5.0集群环境,内置WAS ND7.0.0.17 详情见上图 故障现象:升级BPM 7.5.1集群环境 1,按照 IBM 信息中心步骤,升级BPM需下载相应补丁 包 ...