spring时在启动时就把bean实例化好了吗?如果是这样,我在每个类构造方法里写上System.out.println("hello world!");在spring启动时为什么不输出呢?而getbean的时候却输出了?

解决方案 »

  1.   

    默认是容器启动就实例化。
    楼主是不是在<beans> 标签中增加了default-lazy-init="true" 或者<bean>标签中增加了lazy-init="true"?
      

  2.   

    spring时在启动时就把bean实例化好了吗?
    Spring并不是在启动时实例化bean的,
    而是第一次调用时,实例化Bean。
    采用单例模式。
      

  3.   

    default-lazy-init="true" 和lazy-init="true"都没加,是不是默认的?我要default-lazy-init="flase" 和lazy-init="flase" 才行?
      

  4.   

    BeanFactory和ApplicationContext是不同的,按照lz说的是不是使用的BeanFactory呀??
      

  5.   

    BeanFactory factory =  null;
    //factory = new XmlBeanFactory(new ClassPathResource("com/spring/exercise/applicationContext.xml"));
    //factory.getBean("testBean");
    factory = new ClassPathXmlApplicationContext("com/spring/exercise/applicationContext.xml");
      

  6.   

    对的,我是这样写的。
    BeanFactory factory = null;
    factory = new XmlBeanFactory(new ClassPathResource("com/spring/exercise/applicationContext.xml"));
    factory.getBean("testBean");
    这样的是启动后才实例化吗?还有这样
    factory = new ClassPathXmlApplicationContext("com/spring/exercise/applicationContext.xml");
    factory.getBean("testBean");
    是启动时实例化吗?
      

  7.   

    spring 懒加载机制,使用的是代理对象!
    等到用到的时候才会去调用这个对象,你可以DEBUG的时候看这个对象的id
      

  8.   

    楼上基本都是正解,spring采用的也是懒加载的机制!单实例模式!
      

  9.   

    终于试出来了。
    zhangjihao正解。