对于普通bean是不是载入一个配置文件就创建一个容器呢?然后把这个配置文件中的所有普通bean都放在这个容器里?bean容器

解决方案 »

  1.   

    bean的实例化需要容器去操作的。Web服务器启动后,会先启动web.xml(一般情况配这里的)里配置的容器类,容器启动后,就会根据bean配置文件,利用反射机制去实例化一个个bean配置的类对象。这些对象的索引,由容器保存(这样就不会被垃圾回收器回收了),业务流程里如果需要用到某个类,就可以直接找容器要了。当然,以上只是常规的一个用法。
      

  2.   

    你说的这个我知道,我看spring in action时,它说不止一个spring容器的(There’s no single Spring container. Spring comes with several container implementations that can be categorized into two distinct types.)
    我想知道的是我自己配置的那些bean是放在一个容器还是几个容器的,如果几个容器分开放,它们是怎么区分的
      

  3.   

    不知道哦,我就是想知道用比如ClassPathXmlApplicationContext加载配置文件,那么这是不是就创建了一个新容器呢?
      

  4.   


    代码式的调用就是创建一个容器,ClassPathXmlApplicationContext本身就是一个容器类,所有继承自BeanFactory接口的类都可以看作一个IOC容器。但是在web.xml中通过ContextLoaderListener和contextConfigLocation启动的IOC容器,实际上只有一个,不管你contextConfigLocation参数里面配置文件有多少个。
    如果你还使用了Spring MVC,那还会创建一个MVC的IOC容器,这个容器的父容器是上面那个。
      

  5.   

    不知道哦,我就是想知道用比如ClassPathXmlApplicationContext加载配置文件,那么这是不是就创建了一个新容器呢?如果每次都这样加载一下,必然每次创建一个容器。