java吧 关注:1,246,728贴子:12,726,392
  • 10回复贴,共1

关于spring用工厂类创建对象的一个疑惑

只看楼主收藏回复

无论是spring利用工厂类的静态方法创建对象还是非静态的。
结果无疑例外都还是受到配置文件中scope属性的约束
放例子


IP属地:浙江1楼2015-11-13 14:56回复
    <bean id="userFactory" class="iocdemo.userFactory"></bean>
    <bean id="userFromFac" factory-bean="userFactory" factory-method="getInstance">
    </bean>
    这一段 是用非静态
    user u1 = (user) ac.getBean("userFromFac");
    user u2 = (user) ac.getBean("userFromFac");
    System.out.println(u1);
    System.out.println(u2);
    结果为:
    iocdemo.user@32408add
    iocdemo.user@32408add
    可以看到是一样的
    假如加上scope="prototype"属性
    结果为:
    iocdemo.user@32408add
    iocdemo.user@2b5cccf1


    IP属地:浙江2楼2015-11-13 14:58
    收起回复
      同样的方法测试单例
      加上scope="prototype"
      iocdemo.user@2b5cccf1
      iocdemo.user@5992f874
      如此一来工厂的意义何在?


      IP属地:浙江3楼2015-11-13 15:00
      收起回复
        围观


        5楼2015-11-13 17:34
        回复
          单例模式只会创建一个实例,以后线程调用的话,是采用ThreadLocal来调用的
          prototype原型模式,就是一开始接触java大家所熟悉的方式,每次都做实例化


          6楼2016-10-14 21:51
          回复