Spring配置bean的时候,属性scope一般有5种值。singleton(默认)、prototype、request、session、global session。除此之外,scope也可以自己定义值。
1. singleton
首先这个是scope的默认值,在spring容器中只会有一个共享(数据、属性.....)的实例,会在spring容器启动时初始化,所有调用都使用同一个bean实例,这个实例在spring中是唯一的,且这个实例会存储到单例缓存中,一般无状态bean使用。
2.prototype
每次的bean请求都会创建一个新实例,即new一个实例,一般用于有状态bean。实例的生命周期由代码控制,脱离了spring容器的管理。且在调用时才会实例化对象,前台action请求一般数据、成员变量不可以共享,必须是一个线程请求对应一个实例。
3.request(仅在web的spring ApplicationContext中作用)
每个http请求会对应同一个bean实例,不同请求会返回各自的bean实例。
需要在web.xml中配置
<listener>
<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>
4.session(仅在web的spring ApplicationContext中作用)
每个http session会对应同一个bean实例,不同session会返回各自的bean实例。也需要在web.xml配置。
5.global session(仅在web的spring ApplicationContext中作用)
portlet web应用中才起作用。
相关推荐
spring bean 的作用域(scope), SPringle bean的作用域
在Spring框架中,Bean的作用域(scope)是一项非常重要的特性,它决定了Bean实例的生命周期和管理方式。正确理解和运用Bean的作用域对于优化应用程序性能、简化开发流程具有重要意义。本文将详细介绍Spring中不同...
在配置Bean时,可以使用scope参数来指定Bean的作用域。 三、Bean的实现方式 Spring框架提供了多种方式来实现Bean,例如使用XML配置文件、使用Annotation配置等。 1. 使用XML配置文件:可以在XML配置文件中配置...
- **XML配置**:在传统的Spring应用中,Bean的定义通常写在XML配置文件中,如`springbean-xml`中的配置。 - **注解配置**:使用`@Component`,`@Service`,`@Repository`和`@Controller`注解标记类,配合`@...
6. **RequestScope**:在Web应用中,如果bean需要在一次HTTP请求的生命周期内保持一致,可以使用`@Scope("request")`。这样,每次请求都会创建新的bean实例,而不会影响其他线程。 理解并熟练掌握这些方法,有助于...
在Spring框架中,Bean是核心概念,它是Java对象在Spring容器中的实例,通过XML或Java配置来定义。本文将深入探讨Spring项目中的Bean基础配置、别名配置以及作用范围配置。 首先,我们来理解Bean的基础配置。在...
"粗略实现spring创建bean"这个主题主要涉及到Spring如何初始化、配置以及管理Java对象,也就是我们所说的Bean。下面我们将深入探讨Spring Bean的生命周期、配置方式以及相关API。 1. Spring Bean 的生命周期 - ...
创建SpringBean配置工具类(安全)如: <bean id=... scope="prototype"></bean>
- 配置Singleton Bean的例子是:`<bean id="role" class="spring.chapter2.maryGame.Role" scope="singleton"/>` 或 `<bean id="role" class="spring.chapter2.maryGame.Role" singleton="true"/>` 2. **Prototype...
`@Component`注解的类会自动被Spring扫描并注册为Bean,而`@Configuration`类则提供了更高级别的配置方式,可以替代XML配置文件。 此外,Spring提供了一种名为BeanPostProcessor的接口,它允许我们自定义Bean实例化...
此外,XML配置还支持许多其他特性,如`init-method`和`destroy-method`用于指定Bean的初始化和销毁方法,`scope`属性用于设置Bean的作用域(如单例、原型等),以及`<import>`元素用于导入其他配置文件。 虽然现代...
Spring会首先读取这些配置源,将其转换为Bean定义。 2. **Bean定义注册**: 解析后的配置会被转化为BeanDefinition对象,包含Bean的类名、依赖、初始化方法等信息。这些BeanDefinition被注册到Spring的...
可以创建一个简单的Spring项目,尝试配置不同Scope的Bean,观察并理解它们在运行时的行为差异。 通过以上讲解,我们已经涵盖了Spring框架中IOC的基本概念以及Bean Scope的相关知识。理解这些内容对于开发和维护基于...
在提供的示例代码中,你可能看到了如何在Spring配置文件中定义这些scope,以及如何在Java代码中注入和使用这些Bean。`main`函数可能用于非Web环境下的测试,而Web工程部分则展示了如何在Web应用中使用Bean。 在...
对于 prototype 作用域的 bean,有一点非常重要,那就是 Spring 不能对一个 prototype bean 的整个生命周期负责,容器在初始化、配置、装饰或者是装配完一个 prototype 实例后,将它交给客户端,随后就对该 ...
5. **配置Bean作用域**:使用`@Scope`注解来定义Bean的作用域。默认情况下,Spring Bean是单例的。 ```java @Scope("prototype") @Service public class PrototypeService { // ... } ``` 6. **生命周期方法**:...
除了@Bean,还有许多其他的注解可以进一步细化配置,如@Scope定义Bean的作用域(单例、原型等),@Qualifier用于在多个相同类型的Bean中指定依赖,@Conditional根据条件决定是否创建Bean,@Lazy表示延迟初始化等。...
在Spring框架中,自动扫描和管理Bean是一种便捷的方式,它允许开发者无需显式地在配置文件中声明每个Bean,而是让Spring容器自动发现并管理应用中的组件。这一特性极大地简化了Spring应用的配置,提高了开发效率。...
它是Spring中最基本的Bean容器,负责创建、配置和管理Bean。`BeanFactory`提供了一个延迟初始化Bean的能力,这意味着Bean只在真正被请求时才会被实例化,这有助于提高应用的启动速度。例如,当使用`XmlBeanFactory`...
下面是一个简单的Spring单例Bean的配置文件示例: ```xml <bean id="yiifaa" class="com.stixu.anno.Person" scope="singleton"> <value>yiifaa </bean> ``` 三、Spring单例Bean与单例模式的区别 通过上面的...