千家信息网

spring的singleton和prototype怎么用

发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,今天小编给大家分享一下spring的singleton和prototype怎么用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇
千家信息网最后更新 2025年11月07日spring的singleton和prototype怎么用

今天小编给大家分享一下spring的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

    

test:

public class MyTest {    @Test    public void test(){        //定义容器并初始化        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");        //定义第一个对象        UserDao userDao = applicationContext.getBean(UserDao.class);        System.out.println(userDao.getUserName());        //定义第二个对象        UserDao userDao2 = (UserDao) applicationContext.getBean("userDao");        System.out.println(userDao2.getUserName());        //比较两个对象实例是否是同一个对象实例        System.out.println("第一个实例:"+userDao+"\n"+"第二个实例:"+userDao2);    }}

分析:在测试代码中,将bean定义为singleton,并先后2次通过ApplicationContext的getBean()方法获取bean(userDao),却返回相同的实例对象:com.demo.dao.UserDao@27a5f880,仔细观察,虽然获取bean两次,但是UserDao的无参构造函数却只被调用一次,这也证明了在容器中,singleton实际只被实例化一次,需要注意的是,Singleton模式的bean,ApplicationContext加载bean时,就实例化了bean。

二 prototype

prototype即原型模式,调用多少次bean,就实例化多少次。

将singleton代码改为原型

    

测试代码与singleton一样,但结果却不一样

分析:通过测试结果,不难发现,调用两次bean,就实例化两次UserDao对象,且对象不一样,需要注意的是,prototype类型的bean,只有在获取bean时,才会实例化对象。

三 singleton和prototype区别

(1)singleton在容器中,只被实例化一次,而prototype在容器中,调用几次,就被实例化几次;

(2)在AppplicationContext容器中,singleton在applicaitonContext.xml加载时就被预先实例化,而prototype必须在调用时才实例化。

以上就是"spring的singleton和prototype怎么用"这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注行业资讯频道。

实例 对象 容器 代码 知识 篇文章 模式 测试 内容 函数 原型 结果 分析 不同 很大 相同 两个 只有 大部分 实际 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 网络技术方向的职业发展 未转变者服务器外挂2021 中国最强网络安全大赛队 网络安全需求分析涉及哪八个方面 竞网智赢网络技术有限公司营收 戴姆勒软件开发怎么样 全球企业消减网络安全预算 公安局网络安全警察有前途吗 摄像机修复数据库文件是什么意思 数据库超长字符串 2021年网络安全宣传周横幅 学校图书馆数据库资源用不了 hmcl离线模式可以服务器 azure连接微软服务器 王芽网络安全教育 苏州戴尔服务器故障排查 局域网服务器映射 高中 技术 数据库 云计算培训 机构开拓者网络安全 安卓系统软件开发用什么语言 新乡网络安全态势感知 阿里云服务器 学生 触犯中国网络安全法的案例 网络技术股市实情 融合语音服务器 我的世界him的房间服务器 松江区常见软件开发销售电话 电商与微商对比数据库 怎么打开数据库查询界面 天津省软件开发设计
0