gca*_*ex5 54 java spring spring-mvc
有人可以解释一下Spring bean中的范围,我总是只使用'原型',但是我可以用其他参数代替吗?
我正在谈论的例子
<bean id="customerInfoController" class="com.action.Controller" scope="prototype">
<property name="accountDao" ref="accountDao"/>
<property name="utilityDao" ref="utilityDao"/>
<property name="account_usageDao" ref="account_usageDao"/>
</bean>
Run Code Online (Sandbox Code Playgroud)
Jun*_*san 85
从spring规范中,支持五种类型的bean作用域:
单身人士(默认*)
根据Spring IoC容器将单个bean定义范围限定为单个对象实例.
原型
将单个bean定义范围限定为任意数量的对象实例.
3.请求
将单个bean定义范围限定为单个HTTP请求的生命周期; 也就是说,每个HTTP请求都有自己的bean实例,它是在单个bean定义的后面创建的.仅在Web感知Spring ApplicationContext的上下文中有效.
会议
将单个bean定义范围限定为HTTP会话的生命周期.仅在Web感知Spring ApplicationContext的上下文中有效.
5.全球会议
将单个bean定义范围限定为全局HTTP会话的生命周期.通常仅在portlet上下文中使用时有效.仅在Web感知Spring ApplicationContext的上下文中有效.
*default表示<bean />
标记中未明确提供范围.在这里阅读更多关于它们的信息:http://static.springsource.org/spring/docs/3.0.0.M3/reference/html/ch04s04.html
Div*_*iya 26
在Spring中,bean作用域用于决定应该将哪个类型的bean实例从Spring容器返回给调用者.
支持5种类型的bean作用域:
Singleton:它为每个Spring IoC容器返回一个bean实例.这个单实例存储在这样的单例bean的缓存中,并且该命名bean的所有后续请求和引用都返回缓存的对象.如果bean配置中没有指定bean范围文件,默认为singleton.
原型:每次请求时都返回一个新的bean实例.它不存储像singleton这样的任何缓存版本.
请求:它为每个HTTP请求返回一个bean实例.
会话:它为每个HTTP会话返回一个bean实例(用户级会话).
GlobalSession:它为每个全局HTTP会话返回一个bean实例.它仅在Web感知的Spring ApplicationContext(应用程序级会话)的上下文中有效.
在大多数情况下,您可能只处理Spring的核心范围 - 单例和原型,默认范围是单例.
只想更新一下,就像Spring文档中提到的那样,在Spring 5中,Spring支持6个范围,其中只有4个范围只有在使用支持Web的ApplicationContext时才可用.
singleton(默认)将每个Spring IoC容器的单个bean定义范围限定为单个对象实例.
prototype 将单个bean定义范围限定为任意数量的对象实例.
request 将单个bean定义范围限定为单个HTTP请求的生命周期; 也就是说,每个HTTP请求都有自己的bean实例,它是在单个bean定义的后面创建的.仅在Web感知Spring ApplicationContext的上下文中有效.
session 将单个bean定义范围限定为HTTP会话的生命周期.仅在Web感知Spring ApplicationContext的上下文中有效.
application 将单个bean定义范围限定为ServletContext的生命周期.仅在Web感知Spring ApplicationContext的上下文中有效.
websocket 将单个bean定义范围限定为WebSocket的生命周期.仅在Web感知Spring ApplicationContext的上下文中有效.
在Spring文档描述了以下标准范围:
singleton :(默认)将每个Spring IoC容器的单个bean定义范围限定为单个对象实例.
prototype:将单个bean定义范围限定为任意数量的对象实例.
request:将单个bean定义范围限定为单个HTTP请求的生命周期; 也就是说,每个HTTP请求都有自己的bean实例,它是在单个bean定义的后面创建的.仅在Web感知Spring ApplicationContext的上下文中有效.
session:将单个bean定义范围限定为HTTP会话的生命周期.仅在Web感知Spring ApplicationContext的上下文中有效.
全局会话:将单个bean定义范围限定为全局HTTP会话的生命周期.通常仅在portlet上下文中使用时有效.仅在Web感知Spring ApplicationContext的上下文中有效.
还可以使用a创建和配置其他自定义作用域CustomScopeConfigurer
.一个例子是flow
Spring Webflow添加的范围.
顺便说一句,你认为你总是使用prototype
我觉得奇怪的东西.标准范围是singleton
在我开发的应用程序中,我很少需要原型范围.你应该看看这个.
可以在Spring bean范围中找到每个范围的详细说明.以下是摘要
Singleton - (默认)将每个Spring IoC容器的单个bean定义范围限定为单个对象实例.
prototype - 将单个bean定义范围限定为任意数量的对象实例.
request - 将单个bean定义范围限定为单个HTTP请求的生命周期; 也就是说,每个HTTP请求都有自己的bean实例,它是在单个bean定义的后面创建的.仅在Web感知Spring ApplicationContext的上下文中有效.
session - 将单个bean定义范围限定为HTTP会话的生命周期.仅在Web感知Spring ApplicationContext的上下文中有效.
全局会话 - 将单个bean定义范围限定为全局HTTP会话的生命周期.通常仅在portlet上下文中使用时有效.仅在Web感知Spring ApplicationContext的上下文中有效.
归档时间: |
|
查看次数: |
99210 次 |
最近记录: |