当前位置:首页 > 开发 > 编程语言 > Spring > 正文

spring 创建实体bean的范围

发表于: 2011-10-13   作者:bozch   来源:转载   浏览次数:
摘要: (个人笔记,如有不足之处,谢谢指正)在spring3.0.6中,spring提供了5中scope,分别是singleton、prototype、request、session、global session。这5种是已经被注册的,还有一种thread scope是没有被注册的。spring 3.0也提供了相应的方法来注册某种scope或这自定义相应的scope。下面针对已经提供的几种scope逐一介
(个人笔记,如有不足之处,谢谢指正)在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的范围

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
spring作为一个轻量级J2EE应用框架,已经被广大的开发人员认为是最优秀的框架之一,得到了广泛的应
如题,我们一般用spring的ioc,通过配置注入接口得到这个实现类,现在通过研究公司平台框架发现还有
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/
实体bean 它属于java持久化规范(JPA)里的技术,实体bean通过元数据在javaBean和数据库之间建立起映
将HelloWorld项目中的build.xml文件拷贝到EntityBean项目下 修改其中配置: 1.修改项目名称 <pro
1.ORM: Object Relational Mapping 对象/关系映射 2.一对一关系映射 @OneToOne 2.1.一对一单向映射
序言: 那么首先我们要讲到的是EntityBean就是实体Bean。 实体 Bean 用于封装业务实体的EJB 组件 一
原文出自:http://www.cnblogs.com/liunanjava/p/4399387.html 一、BeanFactory介绍 1.1、Bean: 在
一、BeanFactory介绍 1.1、Bean: 在Spring技术中是基于组件的 最基本了是最常用的单元 其实实例保
spring的bean的scope主要是用来指定如何创建bean对象的,系统已经实现的主要有五中类型,分别是:si
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号