本文共 1667 字,大约阅读时间需要 5 分钟。
Only one shared instance of a singleton bean is managed管理, and all requests for beans with an id or ids matching that bean definition定义 result in that one specific bean instance being returned by the Spring container.
To put it another way, when you define a bean definition and it is scoped as a singleton, the Spring IoC container creates exactly精确one instance of the object defined by that bean definition. This single instance is stored in a cache缓存 of such singleton beans, and all subsequent requests and references for that named bean return the cached object.
The non-singleton, prototype scope of bean deployment展开 results in the creation of a new bean instance every time a request for that specific特定 bean is made. That is, the bean is injected注入 into another bean or you request it through a getBean()
method call on the container. As a rule规定, use the prototype scope for all stateful有状态 beans and the singleton scope for stateless没状态 beans.
The following diagram图表 illustrates阐明 the Spring prototype scope. A data access object (DAO) is not typically代表性 configured as a prototype, because a typical标准 DAO does not hold any conversational 回话式state; it was just easier for this author to reuse the core of the singleton diagram.
request
, session
, and global session
scopes are only available if you use a web-aware Spring ApplicationContext
implementation (such asXmlWebApplicationContext
). If you use these scopes with regular Spring IoC containers such as the ClassPathXmlApplicationContext
, you get an IllegalStateException
complaining about an unknown bean scope. 转载地址:http://zgzli.baihongyu.com/