春豆示波器

2022-08-31 14:06:30

有人可以解释一下Spring Beans中的作用域是什么吗,我一直只使用“原型”,但是我可以用其他参数来代替它吗?

我正在谈论的例子

<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>

答案 1

弹簧规格来看,支持五种类型的Bean示波器:

1. 单例(默认*)

将单个 Bean 定义的作用域限定为每个 Spring IoC 容器的单个对象实例。

2.原型

将单个 Bean 定义的作用域限定为任意数量的对象实例。

3.要求

将单个 Bean 定义的作用域限定为单个 HTTP 请求的生命周期;也就是说,每个HTTP请求都将有自己的bean实例,该实例是在单个Bean定义的基础上创建的。仅在 Web 感知的 Spring ApplicationContext 的上下文中有效。

4. 会话

将单个 Bean 定义的作用域限定为 HTTP 会话的生命周期。仅在 Web 感知的 Spring ApplicationContext 的上下文中有效。

5. 全球会议

将单个 Bean 定义的作用域限定为全局 HTTP 会话的生命周期。通常仅在 Portlet 上下文中使用时才有效。仅在 Web 感知的 Spring ApplicationContext 的上下文中有效。

*默认表示标记中未显式提供范围。在这里阅读更多关于它们的信息: http://static.springsource.org/spring/docs/3.0.0.M3/reference/html/ch04s04.html<bean />


答案 2

在Spring中,Bean作用域用于决定哪种类型的Bean实例应从Spring容器返回给调用方。

支持 5 种类型的 Bean 作用域:

  1. 单身 人士:它为每个 Spring IoC 容器返回一个 Bean 实例。此单个实例存储在此类单例 Bean 的缓存中,并且该命名 Bean 的所有后续请求和引用都将返回缓存的对象。如果在 Bean 配置文件中未指定 Bean 作用域,则缺省为单例。enter image description here

  2. 原型 :每次请求时,它都会返回一个新的Bean实例。它不像单例那样存储任何缓存版本。enter image description here

  3. 请求 :它为每个 HTTP 请求返回一个 Bean 实例。

    enter image description here

  4. 会话 :它为每个 HTTP 会话(用户级会话)返回一个 Bean 实例。

  5. GlobalSession :它为每个全局 HTTP 会话返回一个 Bean 实例。它仅在 Web 感知的 Spring ApplicationContext(应用程序级别会话)的上下文中有效。

在大多数情况下,您可能只处理Spring的核心范围 - 单例原型,默认范围是单例


推荐