经典Java面试题-Spring bean 作用域
2016-10-28 13:49
239 查看
[面试原题]
Spring中定义bean的作用域时,使用singleton和prototype有何区别?
[正确答案]
singleton作用域:当把一个Bean定义设置为singleton作用域时,Spring IoC容器中只会存在一个共享的Bean实例,并且所有对Bean的请求(将其注入到另一个Bean中,或者以程序的方式调用容器的getBean()方法),只要id与该Bean定义相匹配,则只会返回该Bean的同一实例,可以理解为单例模式。
prototype作用域:prototype作用域的Bean会导致在每次对该Bean请求时都会创建一个新的Bean实例。
[面试技术点]
Spring bean定义的作用域概念。
[解读]
小博老师用一个简单的例子说明singleton与prototype的区别。
比如有一个User类定义如下:
Spring配置文件中bean的定义如下:
测试用例代码如下:
执行结果为:
User is initialized.
如果把bean的scope修改为prototype:
再次运行测试用例,结果为:
User is initialized.
User is initialized.
从上面的例子可以看出,当bean的scope配置为singleton的时候,通过spring context获取bean的实例,只会初始化一次。也就说明singletone是单例模式。
当bean的scope配置为prototype时,通过spring context获取bean的实例,每次都会初始化,也就是说每次都新建了一个对象。
[扩展]
Spring框架支持以下五种bean的作用域:
singleton: bean在每个SpringIoC 容器中只有一个实例。
prototype:一个bean的定义可以有多个实例。
request:每次http请求都会创建一个bean,该作用域仅在基于web的SpringApplicationContext情形下有效。
session:在一个HTTP Session中,一个bean定义对应一个实例。该作用域仅在基于web的Spring ApplicationContext情形下有效。
global-session:在一个全局的HTTP Session中,一个bean定义对应一个实例。该作用域仅在基于web的Spring ApplicationContext情形下有效。
缺省的Spring bean 的作用域是singleton。
Spring中定义bean的作用域时,使用singleton和prototype有何区别?
[正确答案]
singleton作用域:当把一个Bean定义设置为singleton作用域时,Spring IoC容器中只会存在一个共享的Bean实例,并且所有对Bean的请求(将其注入到另一个Bean中,或者以程序的方式调用容器的getBean()方法),只要id与该Bean定义相匹配,则只会返回该Bean的同一实例,可以理解为单例模式。
prototype作用域:prototype作用域的Bean会导致在每次对该Bean请求时都会创建一个新的Bean实例。
[面试技术点]
Spring bean定义的作用域概念。
[解读]
小博老师用一个简单的例子说明singleton与prototype的区别。
比如有一个User类定义如下:
Spring配置文件中bean的定义如下:
测试用例代码如下:
执行结果为:
User is initialized.
如果把bean的scope修改为prototype:
再次运行测试用例,结果为:
User is initialized.
User is initialized.
从上面的例子可以看出,当bean的scope配置为singleton的时候,通过spring context获取bean的实例,只会初始化一次。也就说明singletone是单例模式。
当bean的scope配置为prototype时,通过spring context获取bean的实例,每次都会初始化,也就是说每次都新建了一个对象。
[扩展]
Spring框架支持以下五种bean的作用域:
singleton: bean在每个SpringIoC 容器中只有一个实例。
prototype:一个bean的定义可以有多个实例。
request:每次http请求都会创建一个bean,该作用域仅在基于web的SpringApplicationContext情形下有效。
session:在一个HTTP Session中,一个bean定义对应一个实例。该作用域仅在基于web的Spring ApplicationContext情形下有效。
global-session:在一个全局的HTTP Session中,一个bean定义对应一个实例。该作用域仅在基于web的Spring ApplicationContext情形下有效。
缺省的Spring bean 的作用域是singleton。
相关文章推荐
- 经典Java面试题-Spring bean 作用域
- OpenJDK源码研究笔记(二)-Comparable和Comparator2个接口的作用和区别(一道经典的Java笔试面试题)
- OpenJDK源码研究笔记(二)-Comparable和Comparator2个接口的作用和区别(一道经典的Java笔试面试题)
- switch语句能否作用在byte上,能否作用在long上,能否作用在String上?——Java经典面试题系列
- OpenJDK源码研究笔记(二)-Comparable和Comparator2个接口的作用和区别(一道经典的Java笔试面试题)
- OpenJDK源码研究笔记(二)-Comparable和Comparator2个接口的作用和区别(一道经典的Java笔试面试题)
- java经典面试题
- JAVA中的作用域说明---JAVA面试题详解
- 一道经典的Java面试题,抛析内部结构
- 经典java面试题
- java经典算法面试题(1)
- JAVA经典面试题
- 32道经典java面试题
- 在网上找的一些java面试题,特经典
- java经典面试题
- 一道经典的JAVA面试题
- JAVA经典面试题
- 经典Java面试题(搞笑)
- 深刻剖析经典面试题之二:Java与C#的垃圾回收机制
- java经典面试题