`
bozch
  • 浏览: 456772 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
阅读更多
(个人笔记,如有不足之处,谢谢指正)在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 in Action(第二版 中文高清版).part2

    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 基本的方法...

    Spring in Action(第二版 中文高清版).part1

    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 基本的方法...

    Spring in Action(第2版)中文版

    2.5.1bean范围化 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基本的方法替换 3.2.2...

    spring+springmvc+mybatis的整合

    2.3 spring-bean 我先创建一个实体类Person,再注册(注册了没用) 2.4 spring-db 我这里创建数据源,但是alt+/出不来提示,我一想,mysql的包没载入,在maven中加入 还是没得,恩,我加了jdbc的包,还是没有,我...

    spring2.5+hibernate3.3+struts1.3的整合

    一个spring2.5+hibernate3.3+struts1.3的整合的完整项目,该项目使用spring容器创建sessionFactory,管理struts ActionBean的创建,其中使用注解的方式创建实体Bean以及依赖注入和事务

    基于java的企业级应用开发:Bean的实例化.ppt

    创建Spring配置文件beans1.xml,并配置Bean1实体类Bean; 创建测试类,测试程序。 &lt;?xml version="1.0" encoding="UTF-8"?&gt; ...

    spring boot oauth2 jwt 中文文档.docx

    在 Spring Boot 中,我们可以使用 @Configuration 注解来定义配置类,并使用 @Bean 注解来定义 Bean。 使用 JWT(JSON Web Token)来生成访问令牌是 OAuth2 授权框架的一种常见实现。JWT 是一种基于 json 的令牌,...

    体验Spring的IoC容器的优点(Eclipse中).doc

    在 UserManageTest 类中,我们首先需要创建一个 Spring 的应用上下文对象 ApplicationContext,然后使用该对象来获取一个名为 oneUserInfoManage 的 bean。接着,我们可以使用该 bean 来调用 doUserLogin 方法,并将...

    BOS 技术整理

    先设计表,再创建实体 JPA 注解使用 @Entity 标明是实体类 @Table 映射表名称 @Id 主键标识 @GeneratedValue 自动生成主键的值 @Column 设置映射数据表中列信息 @Temporal 控制数据表保存日期哪个部分...

    Spring从入门到入土——快速上手Spring

    快速入门HelloSpring编写代码编写一个Hello实体类编写Spring文件,命名为beans.xml测试结果以及总结IOC创建对象方式通过无参构造方法来创建User.javabeans.xml测试结果通过有参构造方法来创建UserT.javabeans.xml 有...

    SpringInAction:SpringInAction书籍学习

    把bean装配在一起是通过依赖注入(dependency injection,DI)组件不会创建和管理,它依赖的组件的生命周期,使用依赖注入,大家共同依赖于单独的实体(容器)来创建和维护组件。 @Configuration注解会告诉Spring这...

    Spring面试题

    Spring 模块构建在核心容器之上,核心容器定义了创建、配置和管理 bean 的方式,如图 1 所示。 组成 Spring 框架的每个模块(或组件)都可以单独存在,或者与其他一个或多个模块联合实现。每个模块的功能如下: ☆...

    spring-data-ebean:用于Spring数据的Ebean实现,简化了创建基于Ebean的数据访问层的开发。超简单,超强大的ORM框架,OQL,SQL,ES多查询引擎,超越JPA,Hibernate,Mybatis

    春天数据bean Spring数据的Ebean实现。 项目的主要目标是使构建使用数据访问技术的Spring支持的应用程序变得更加容易。 此模块处理对基于的数据访问层的增强支持。 产品特点 JPA实体的CRUD方法的Ebean实现 根据查询...

    Sqlbean是一款通过Java语法生成SQL语句的ORM插件

    Sqlbean是一款通过Java语法生成SQL语句的ORM插件,其理念是弱化在开发阶段对数据库的操作,无需先建表再开发,可直接编写实体类和业务代码,项目启动后自动创建表和维护表结构。内置大量常用方法,支持灵活的条件...

    Spring活动:Spring活动示例应用程序

    使用JPA,Bean验证和Spring格式注释的简单POJO Event域实体 交易服务层 Spring Data JPA存储库层 Spring @MVC + Thymeleaf和REST表示层 运行应用程序 要查看正在运行的应用程序,只需执行gradlew bootRun ,然后转...

    基于java实现仿京东商城电商系统项目设计与实现源码分享

    java毕设 SSM架构,是三层结合所成...可以配置每个bean如何被创建,基于一个可配置原型prototype,你的bean可以创建一个单独的实例或者每次需要时都生成一个新的实例。 支持AOP:spring提供对AOP的支持,它允许将一些

    基于java实现仿京东商城电商系统项目设计与实现源码

    java学习 ...可以配置每个bean如何被创建,基于一个可配置原型prototype,你的bean可以创建一个单独的实例或者每次需要时都生成一个新的实例。 支持AOP:spring提供对AOP的支持,它允许将一些通用任务

    基于java实现大学生求职就业网项目设计源码分享

    可以配置每个bean如何被创建,基于一个可配置原型prototype,你的bean可以创建一个单独的实例或者每次需要时都生成一个新的实例。 支持AOP:spring提供对AOP的支持,它允许将一些通用任务,如安

    基于java实现大学生求职就业网项目设计源码

    可以配置每个bean如何被创建,基于一个可配置原型prototype,你的bean可以创建一个单独的实例或者每次需要时都生成一个新的实例。 支持AOP:spring提供对AOP的支持,它允许将一些通用任务,如安

    Springcloud-Alibaba〖二〗微服务cloud-consumer-order80构建与公共类cloud-api-commons

    建立 cloud-consumer-order80微服务5.1 创建模块5.2 改pom文件5.3 建立yml文件5.4 建立主启动5.5 引入实体类5.6 创建 RestTemplate模板加入spring的bean中5.7 controller层5.8 测试及坑六. 工程重构6.1 重复代码...

Global site tag (gtag.js) - Google Analytics