Sha*_*thi 8 java spring spring-mvc application-scope
我在下面的博客中看到了"应用程序"范围.这是真的吗?
因为,根据我的冲浪,我知道spring只有5个以下的范围.如果我错了,请纠正我.
Pau*_*Pau 13
官方文档中有一节与bean范围有关:
基本上,他们定义下一个:
singleton(默认)将每个Spring IoC容器的单个bean定义范围限定为单个对象实例.
prototype 将单个bean定义范围限定为任意数量的对象实例.
request 将单个bean定义范围限定为单个HTTP请求的生命周期; 也就是说,每个HTTP请求都有自己的bean实例,它是在单个bean定义的后面创建的.仅在Web感知Spring ApplicationContext的上下文中有效.
session 将单个bean定义范围限定为HTTP会话的生命周期.仅在Web感知Spring ApplicationContext的上下文中有效.
globalSession 将单个bean定义范围限定为全局HTTP会话的生命周期.通常仅在Portlet上下文中使用时有效.仅在Web感知Spring ApplicationContext的上下文中有效.
application 将单个bean定义范围限定为ServletContext的生命周期.仅在Web感知Spring ApplicationContext的上下文中有效.
websocket 将单个bean定义范围限定为WebSocket的生命周期.仅在Web感知Spring ApplicationContext的上下文中有效.
此外,由于Spring 3.0存在其他作用域 线程范围,但默认情况下未注册,而且您甚至可以创建自己的作用域:
从Spring 3.0开始,线程范围可用,但默认情况下未注册.有关更多信息,请参阅SimpleThreadScope的文档.有关如何注册此自定义范围或任何其他自定义范围的说明,请参阅"使用自定义范围"一节.
有一节介绍如何定义自定义范围:
尊重Application scope,他们将其定义为下一个:
Spring容器通过对整个Web应用程序使用appPreferences bean定义一次来创建AppPreferences bean的新实例.也就是说,appPreferences bean的作用域是ServletContext级别,存储为常规的ServletContext属性.
它还解释了Spring单例bean之间的区别:
这有点类似于Spring单例bean,但在两个重要方面有所不同:它是每个ServletContext的单例,而不是每个Spring的'ApplicationContext'(在任何给定的Web应用程序中可能有几个),它实际上是暴露的,因此作为ServletContext属性可见
因此,如果您希望使用XML:
<bean id="apps" class="com.App" scope="application"/>
Run Code Online (Sandbox Code Playgroud)
或注释:
@ApplicationScope
@Component
public class App {
// ...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11828 次 |
| 最近记录: |