时间:2021-05-20
关于spring bean作用域,基于不同的容器,会有所不同,如BeanFactory和ApplicationContext容器就有所不同,在本篇文章,主要讲解基于ApplicationContext容器的bean作用域。
关于bean的作用域,在spring中,主要包括singleton,prototype,session,request,global,本篇文章主要讲解常用的两种,即:singleton和prototype.
一 singleton
singleton为单例模式,即scope="singleton"的bean,在容器中,只实例化一次。
dao示例代码:
package com.demo.dao;public class UserDao { public UserDao(){ System.out.println("UserDao 无参构造函数被调用"); } //获取用户名 public String getUserName(){ //模拟dao层 return "Alan_beijing"; }}applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://.demo.dao.UserDao" id="userDao" scope="prototype"/></beans>测试代码与singleton一样,但结果却不一样:
分析:通过测试结果,不难发现,调用两次bean,就实例化两次UserDao对象,且对象不一样,需要注意的是,prototype类型的bean,只有在获取bean时,才会实例化对象。
三 singleton和prototype区别
(1)singleton在容器中,只被实例化一次,而prototype在容器中,调用几次,就被实例化几次;
(2)在AppplicationContext容器中,singleton在applicaitonContext.xml加载时就被预先实例化,而prototype必须在调用时才实例化
singleton:
定义bean:
测试:
prototype:
定义bean:
测试:不调用
测试:调用
4.singleton比prototype消耗性能,在web开发中,推荐使用singleton模式,在app开发中,推荐使用prototype模式。
到此这篇关于Spring中的singleton和prototype的实现的文章就介绍到这了,更多相关Spring singleton和prototype内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
熟悉Spring开发的朋友都知道Spring提供了5种scope分别是singleton、prototype、request、session、globalses
本文实例讲述了Spring实战之Bean的作用域singleton和prototype用法。分享给大家供大家参考,具体如下:一配置二Beanpackageorg
无状态Bean的作用域是singleton单实例,如果我们向singleton的BeanA注入prototype的BeanB,并希望每次调用BeanA的getB
这篇文章主要介绍了简单了解springbean作用域属性singleton和prototype的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一
今天研究了一下scope的作用域。默认是单例模式,即scope="singleton"。另外scope还有prototype、request、session、g