Scope | Description | Interpretation |
---|---|---|
singleton | (Default) Scopes a single bean definition to a single object instance for each Spring IoC container. | 不标注scope的情况下默认交给spring管理的都是单例模式。此处的单例模式与设计模式中的单例模式并不是一种概念,设计模式的单例模式目的是始终保证该类有且只有一个实例,而spring中的singleton则是对于所有请求引用都返回同一个实例。 |
prototype | Scopes a single bean definition to any number of object instances. | 该模式在此处翻译成多例模式更为确切。该模式的对于所有请求都会返回一个新的实例。 |
如何选择单例多例?如果程序中,该对象的实例中含有成员变量,且每次调用时其成员变量都可能会发生变更,此时则需要多例模式以保证数据安全(如前端与action交互)。
如果我们仅仅调用实例中的方法,或者我们对于成员变量的调用是一致的(比如获取数据库连接),那么可以使用单例模式节省空间。