(个人笔记,如有不足之处,谢谢指正)在spring3.0.6中,spring提供了5中scope,分别是singleton、prototype、request、session、global session。这5种是已经被注册的,还有一种thread scope是没有被注册的。spring 3.0也提供了相应的方法来注册某种scope或这自定义相应的scope。下面针对已经提供的几种scope逐一介绍一下:
1、singleton:它是在spring容器中只有一个实例。在设计模式中讲到的单例模式,他是相对于某个classLoader存在的。在spring中配置相应的实体时,如果没有定义scope属性,默认的是采用singleton。例如:<bean id="personService" class="com.zb.PersonService"/>与<bean id="personService" class="com.zb.PersonService" scope="singleton"/>效果是一样的。
2、prototype:这种scope在注入到其他实体中或者在程序中通过getBean()获得的实体都是不同的。这用scope应用,在spring中有如下说明:As a rule, use the prototype scope for all stateful beans and the singleton scope for stateless beans.(一般来说,prototype应用与状态性的实体,而singleton应用于无状态的实体中)。
在使用这种scope的时候,他会占用大量的系统资源。所以这需要定期的对它占用的资源进行清理。
注:在singleton实例中注入prototype实例时,依赖关系是在初始化的时候就确定了,一旦将prototype的实例注入到实例中,那么当前prototype实例会一直服务于singleton实例。如果想在运行是singleton能够获得不同的prototype实例,则需要用到“方法注入(Method injection)”
3、request 、session、global session
在使用这些scope的时候需要做一些必要的配置,当然这些配置对singleton和prototype并不是必须的。
如果在web项目中使用了spring的mvc,则就不需要相关配置了。因为spring Mvc 的request请求是Spring DispatcherServlet, or DispatcherPortlet来处理的。Spring DispatcherServlet, or DispatcherPortlet暴露了所有的相关状态。
如果是使用了serlvet2.4以上的容器,所有的请求并没有使用Spring的DispatcherServlet,例如jsf,struts,这是就需要在web.xml中配置监听器javax.servlet.ServletRequestListener,配置如下:
<listener>
<listener-class>
org.springframework.web.context.request.RequestContextListener
</listener-class>
</listener>
如果是使用的web容器是低版本的,如servlet2.3,则需要把下面的配置加入到web.xml中:<web-app>
..
<filter>
<filter-name>requestContextFilter</filter-name>
<filter-class>org.springframework.web.filter.RequestContextFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>requestContextFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
...
</web-app>
global session只能应用在portlet类的项目中。
分享到:
相关推荐
在Spring框架中,Bean的作用域是决定如何管理和创建Bean实例的关键概念。本篇文章将深入探讨两种主要的作用域:singleton和prototype,并通过实例分析其用法和注意事项。 首先,`singleton`是Spring默认的作用域,...
Bean 的本质就是 Java 中的类,而 Spring 中的 Bean 其实就是对实体类的引用,来生产 Java 类对象,从而实现生产和管理 Bean。 Bean 的配置 Spring 容器支持两种格式的配置文件:Properties 文件和 XML 文件。在...
### Spring框架配置Bean的高级属性解析 在Spring框架中配置Bean是进行依赖注入的基础操作,而深入理解如何高效地配置Bean及其属性对于提高开发效率、优化项目结构具有重要意义。本文将详细解读标题“spring框架配置...
标题和描述中提到的"各种转换,xml,实体bean,动态bean,map等"涉及了Java编程语言中的一些核心概念,这些概念在企业级应用开发中非常常见。下面我们将详细探讨这些知识点。 1. **XML(Extensible Markup Language)*...
1. **创建实体类**:首先,你需要创建一个Java类,该类将代表数据库中的表。这个类需要被`@Entity`注解标记,表明它是JPA中的一个实体。 2. **定义主键**:每个实体都需要一个主键来唯一标识它。这通常通过`@Id`...
EJB规范定义了三种主要类型的bean:无状态session bean、有状态session bean和实体bean,每种类型都有其特定的用途和生命周期。 1. **无状态Session Bean** 无状态session bean是最基础的EJB类型,它们不维护任何...
在SSH框架下,有时候我们需要在代码中获取Spring管理的bean,以便于调用其方法或进行业务操作。本篇文章将详细介绍在SSH框架中如何通过`getBean`方法获取实体。 1. **`getBean`方法简介** `getBean`是Spring框架...
然后,Spring容器可以通过XML配置或注解方式创建并初始化这个bean,当需要新增客户时,从容器中获取Customer bean实例,填充数据并调用相应的服务方法来保存到数据库。 客户信息查询:查询操作通常涉及到Spring的...
4. 配置DAO层:创建基于Spring的DAO接口和实现类,使用`@Autowired`注解注入SessionFactory,然后在方法中使用SessionFactory创建Session,进行数据库操作。 5. 事务管理:通过Spring的`@Transactional`注解,实现...
在这个例子中,我们将探讨如何将Spring Security与MySQL数据库结合使用,通过bean配置来实现用户认证和权限管理。首先,我们需要理解Spring Security的基本架构,它由一系列组件构成,如AuthenticationManager负责...
3. 创建实体类 4. 创建 Spring 配置文件 5. 在配置文件中创建 bean 6. 依赖注入(DI),也就是注入属性 7. 创建测试类测试 五、依赖注入 依赖注入(DI)是指将对象的依赖关系交给 Spring 进行管理。依赖注入有两种...
Spring的内部bean是指在另一个bean的属性中定义的bean,它仅在包含它的外部bean的上下文中存在。 22、什么是spring装配。 Spring装配是指将对象组装到一起,并设置它们之间的依赖关系的过程。 23、自动装配有哪些...
在EJB3模块下,我们需要创建实体bean(Entity Bean)和会话bean(Session Bean)。实体bean用于持久化数据,而会话bean则提供业务逻辑。在`persistence.xml`文件中,定义持久化单元(Persistence Unit),并指定数据...
2.5.1 Bean范围化 2.5.2 利用工厂方法来创建Bean 2.5.3 初始化和销毁Bean 2.6 小结 第3章 高级Bean装配 3.1 声明父Bean和子Bean 3.1.1 抽象基Bean类型 3.1.2 抽象共同属性 3.2 方法注入 3.2.1 基本的方法...
5. **创建实体类**:根据数据库表结构创建对应的Java实体类,这些类将作为数据传输对象(DTO)。 6. **编写Service和Controller**:创建业务Service层,使用Spring的@Autowired注解注入Mapper接口,实现业务逻辑。...
这些对象通常被称为Spring Bean,它们是Spring管理的实体。Spring通过读取配置文件(如XML或Java配置),根据配置来实例化Bean,并处理它们之间的依赖关系。 在实际操作中,我们通常会创建一个名为`...
在这个项目中,实体类Bean代表数据库中的表,通过Hibernate的注解,可以快速创建与数据库表对应的实体类。 4. **代码生成工具**:`BuildCodeTest.java`是这个项目的代码生成工具,它可以分析实体类Bean的注解信息,...
- **Bean 范围:** Spring 支持多种 Bean 范围,包括 singleton、prototype 等。 - **自定义 Bean 的状态:** 可以通过定义 Bean 的初始化方法和销毁方法来自定义 Bean 的生命周期。 - **Bean 定义依赖性:** 在 ...
它提供了服务器端的组件模型,包括会话bean(Session Beans)、实体bean(Entity Beans)和消息驱动bean(Message-Driven Beans),以支持分布式计算和事务处理。而Spring框架,则是轻量级的Java应用框架,以其IoC...