网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

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";
    }
}

spring的singleton和prototype怎么用

applicationContext.xml




    

spring的singleton和prototype怎么用

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代码改为原型




    

spring的singleton和prototype怎么用

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

spring的singleton和prototype怎么用spring的singleton和prototype怎么用

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

三 singleton和prototype区别

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

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

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


分享题目:spring的singleton和prototype怎么用
文章起源:http://bjjierui.cn/article/jdijeh.html

其他资讯