Singleton的使用与否
Beans被定义为两种部署模式中的一种:singleton或non-singleton。 (后一种也别叫作prototype,尽管这个名词用的不精确因为它并不是非常适合)。 如果一个bean是singleton形态的,那么就只有一个共享的实例存在, 所有和这个bean定义的id符合的bean请求都会返回这个唯一的、特定的实例。 如果bean以non-singleton,prototype模式部署的话,对这个bean的每次请求都会创建一个新的bean实例。这对于例如每个user需要一个独立的user对象这样的情况是非常理想的。 Beans默认被部署为singleton模式,除非你指定。要记住把部署模式变为non-singletion(prototype)后,每一次对这个bean的请求都会导致一个新创建的bean,而这可能并不是你真正想要的。所以仅仅在绝对需要的时候才把模式改成prototype。 在下面这个例子中,两个bean一个被定义为singleton,而另一个被定义为non-singleton(prototype)。客户端每次向BeanFactory请求都会创建新的exampleBean,而AnotherExample仅仅被创建一次;在每次对它请求都会返回这个实例的引用。 <bean id="exampleBean"
      class="examples.ExampleBean" singleton="false"/>
<bean name="yetAnotherExample"
      class="examples.ExampleBeanTwo" singleton="true"/>
注意:当部署一个bean为prototype模式,这个bean的生命周期就会有稍许改变。 通过定义,Spring无法管理一个non-singleton/prototype bean的整个生命周期, 因为当它创建之后,它被交给客户端而且容器根本不再跟踪它了。当说起non-singleton/prototype bean的时候, 你可以把Spring的角色想象成“new”操作符的替代品。从那之后的任何生命周期方面的事情都由客户端来处理 。