spring 作用域| 耗时:0.195秒|17518条结果

Spring作用以及RequestContextListener作用

一、配置方式  在Spring2.0中除了以前的Singleton和Prototype外又加入了三个新的web作用,分别为request、session和global session,如果你想让你的容器里的某个bean拥有其中某种新的web作用, 除了在bean级上配置相应的
http://www.itnose.net/detail/6360671.html 2015-08-29 17:21   [Spring]

Spring Bean的作用

Spring Bean的作用 作用 描述 singleton 在每个Spring IoC容器中一个bean定义对应一个对象实例。 prototype 一个bean定义对应多个对象实例。 request 在一次HTTP请求中,一个bean定义对应一个实例;即每次HTTP请求将会有各自的bean实例,它们依据某个bean定义创建而成。该作用仅在基于web的Spring ApplicationContext情形下有效。 session 在一个HTTP Session中,一个bean定义对应一个实例。该作用仅在基于web的Spring ApplicationContext情形下有效。 global session 在一个全局的HTTP Session中,一个bean定义对应一个实例。典型情况下,仅在使用portlet context的时候有效。该作用仅在基于web的Spring ApplicationContext情形下有效。   Singleton作用 当一个bean的作用为singleton, 那么Spring IoC容器中只会存在一个共享的bean实例,并且所有对bean的请求,只要id与该bean定义相匹配,则只会返回bean的同一实例。 换言之,当把一个bean定义设置为singlton作用时,Spring IoC容器只会创建该bean定义的唯一实例。这个单一实例会被存储到单例缓存(singleton cache)中,并且所有针 对该bean的后续请求和引用都将返回被缓存的对象实例。   Prototype作用 Prototype作用的bean会导致在每次对该bean请求(将其注入到另一个bean中,或者以程序的方式调用容器的getBean()方法)时都会创建一个新的bean实例。根据经验,对所 有有状态的bean应该使用prototype作用,而对无状态的bean则应该使用singleton作用。   其他作用     request、session以及global session仅在基于web的应用中使用(不必关心你所采用的是什么web应用框架)。     注意 下面介绍的作用仅仅在使用基于web的Spring ApplicationContext实现(如XmlWebApplicationContext)时有用。如果在普通的Spring IoC容器中,比如像XmlBeanFactory 或ClassPathXmlApplicationContext,尝试使用这些作用,你将会得到一个IllegalStateException异常(未知的bean作用)。    初始化web配置     要使用request、session和 global session作用的bean(即具有web作用的bean),在开始设置bean定义之前,还要做少量的初始配置。请注意,假如你只想要“常规的”作用,也就是singleton和prototype,就不需要这一额外的设置。 在目前的情况下,根据你的特定servlet环境,有多种方法来完成这一初始设置。如果你使用的是Servlet 2.4及以上的web容器,那么你仅需要在web应用的XML声明文件web.xml中增加下述ContextListener即可 <listener>   <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class> </listener> 如果你用的是早期版本的web容器(Servlet 2.4以前),那么你要使用一个javax.servlet.Filter的实现。请看下面的web.xml配置片段: <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> RequestContextListener和RequestContextFilter两个类做的都是同样的工作:将HTTP request对象绑定到为该请求提供服务的Thread。这使得具有request和session作用的bean能够在后面的调用链中被访问到。   Request作用 <bean id="loginAction" class="com.foo.LoginAction" scope="request"/> 针对每次HTTP请求,Spring容器会根据loginAction bean定义创建一个全新的LoginAction bean实例,且该loginAction bean实例仅在当前HTTP request内有效,因此可以根据需要放心的更改所建实例的内部状态,而其他请求中根据loginAction bean定义创建的实例,将不会看到这些特定于某个请求的状态变化。当处理请求结束,request作用的bean实例将被销毁。   Session作用 <bean id="userPreferences" class="com.foo.UserPreferences" scope="session"/> 针对某个HTTP Session,Spring容器会根据userPreferences bean定义创建一个全新的userPreferences bean实例,且该userPreferences bean仅在当前HTTP Session内有效。与request作用一样,你可以根据需要放心的更改所创建实例的内部状态,而别的HTTP Session中根据userPreferences创建的实例,将不会看到这些特定于某个HTTP Session的状态变化。当HTTP Session最终被废弃的时候,在该HTTP Session作用内的bean也会被废弃掉。   global session作用 <bean id="userPreferences" class="com.foo.UserPreferences" scope="globalSession"/> global session作用类似于标准的HTTP Session作用,不过它仅仅在基于portlet的web应用中才有意义。Portlet规范定义了全局Session的概念,它被所有构成某个portlet web应用的各种不同的portlet所共享。在global session作用域中定义的bean被限定于全局portlet Session的生命周期范围内。 请注意,假如你在编写一个标准的基于Servlet的web应用,并且定义了一个或多个具有global session作用的bean,系统会使用标准的HTTP Session作用,并且不会引起任何错误。   作用bean与依赖 能够在HTTP request或者Session(甚至自定义)作用域中定义bean固然很好,但是Spring IoC容器除了管理对象(bean)的实例化,同时还负责协作者(或者叫依赖)的实例化。如果你打算将一个Http request范围的bean注入到另一个bean中,那么需要注入一个AOP代理来替代被注入的作用bean。也就是说,你需要注入一个代理对象,该对象具有与被代理对象一样的公共接口,而容器则可以足够智能的从相关作用域中(比如一个HTTP request)获取到真实的目标对象,并把方法调用委派给实际的对象。   注意 <aop:scoped-proxy/>不能和作用为singleton或prototype的bean一起使用。为singleton bean创建一个scoped proxy将抛出BeanCreationException异常。 让我们看一下将相关作用bean作为依赖的配置,配置并不复杂(只有一行),但是理解“为何这么做”以及“如何做”是很重要的。 <bean id="userPreferences" class="com.foo.UserPreferences" scope="session"> <aop:scoped-proxy/> </bean> <bean id="userService" class="com.foo.SimpleUserService"> <property name="userPreferences" ref="userPreferences"/> </bean> 在XML配置文件中,要创建一个作用bean的代理,只需要在作用bean定义里插入一个<aop:scoped-proxy/>子元素即可(你可能还需要在classpath里包含CGLIB库,这样容器就能够实现基于class的代理;还可能要使用基于XSD的配置)。上述XML配置展示了“如何做”,现在讨论“为何这么做”。在作用为request、session以及globalSession的bean定义里,为什么需要这个<aop:scoped-proxy/>元素呢?下面我们从去掉<aop:scoped-proxy/>元素的XML配置开始说起: <bean id="userPreferences" class="com.foo.UserPreferences" scope="session"/> <bean id="userManager" class="com.foo.UserManager"> <property name="userPreferences" ref="userPreferences"/> </bean> 从上述配置中可以很明显的看到singleton bean userManager被注入了一个指向HTTP Session作用bean userPreferences的引用。singleton userManager bean会被容器仅实例化一次,并且其依赖(userPreferences bean)也仅被注入一次。这意味着,userManager在理论上只会操作同一个userPreferences对象,即原先被注入的那个bean。而注入一个HTTP Session作用的bean作为依赖,有违我们的初衷。因为我们想要的只是一个userManager对象,在它进入一个HTTP Session生命周期时,我们希望去使用一个HTTP Session的userPreferences对象。 当注入某种类型对象时,该对象实现了和UserPreferences类一样的公共接口(即UserPreferences实例)。并且不论我们底层选择了何种作用机制(HTTP request、Session等等),容器都会足够智能的获取到真正的UserPreferences对象,因此我们需要将该对象的代理注入到userManager bean中, 而userManager bean并不会意识到它所持有的是一个指向UserPreferences引用的代理。在本例中,当UserManager实例调用了一个使用UserPreferences对象的方法时,实际调用的是代理对象的方法。随后代理对象会从HTTP Session获取真正的UserPreferences对象,并将方法调用委派给获取到的实际的UserPreferences对象。   自定义作用   详情百度,知道有这么个东西就行了
http://www.itnose.net/detail/6091123.html 2014-08-12 10:48   [J2SE]

spring bean作用

; public class Main { public static void main(String[] args) { ApplicationContext ctx = new ClassPathXmlApplicationContext("beans-scope.xml"); Car car = (Car) ctx.getBean("car"); Car car2 = (Car) ctx.getBean("car"); System.out.println(car == car2); } } beans-scope.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!-- 使用bean的scope属性来配置bean的作用 singleton:默认值,容器初始化时创建bean实例,在整个容器的生命周期内只创建这一个bean。单例的。 prototype:原型的。容器初始化时不创建bean的实例。而在每次请求时都创建一个新的Bean实例,并返回。 --> <bean id="car" class="com.coslay.beans.autowire.Car" scope="prototype"> <property name="brand" value="Audi"></property> <property name="price" value="300000000"></property> </bean> </beans>
http://www.itnose.net/detail/6053057.html 2014-06-03 16:42   [Spring]

spring中scope作用

,它的头文件形式如下: 如何使用spring作用: <bean id="role" class="spring.chapter2.maryGame.Role" scope="singleton"/> 这里的 
http://www.itnose.net/detail/6729570.html 2017-03-10 13:16   [Spring]

Spring中bean的作用

根据一张“处方”就可以创建多个实例。 你不仅可以控制注入到对象中的各种依赖和配置值,还可以控制该对象的作用。这样你可以灵活选择所建对象的作用,而不必在Java Class级定义作用Spring Framework支持五种作用(其中有三种只能用在基于web的
http://www.itnose.net/detail/6298962.html 2015-06-17 20:04   [Spring]

Spring(3.2.3) - Beans(6): 作用

Spring 支持五种作用,分别是 singleton、prototype、request、session 和 global session。 作用 说明  singleton (默认作用)单例模式,每个 Spring IoC 容器只会实例化一个使用
http://www.itnose.net/detail/6274200.html 2015-05-16 23:30   [J2SE]

Spring 配置使用 - Bean 作用

基本概念 Scope,也称作用,在 Spring IoC 容器是指其创建的 Bean 对象相对于其他 Bean 对象的请求可见范围。 在 Spring IoC 容器中具有以下几种作用:基本作用(request、prototype),Web 作用(reqeust、session
http://www.itnose.net/detail/6651066.html 2016-10-08 22:16   [Spring]

Spring中Bean的定义及作用的注解实现

实现 作用 可用注解@Scope来指明作用 也可以自定义scope策略,实现ScopeMetadataResolver接口并提供一个无参构造器 <beans> <context:component-scan base-package="
http://www.itnose.net/detail/6173187.html 2014-12-14 17:05   [Spring]

Spring学习(二)bean的作用

灵活选择所建对象的作用,而不必在Java Class级定义作用Spring Framework支持五种作用(其中有三种只能用在基于web的Spring ApplicationContext)。 内置支持的作用分列如下: 表 3.4. Bean作用 作用描述 singleton
http://www.itnose.net/detail/523551.html 2014-02-07 12:11   [Spring]

Spring中设置bean作用

Spring中,bean对象可以有多种作用 singletion 默认的,每个IOC容器只创建一个Bean实例 prototype每次请求创建一个Bean实例 request每次http请求创建一个实例 session每次会话创建一个实例 globalsession每个全局Http请求创建一个
http://www.itnose.net/detail/512193.html 2014-01-27 11:05   [Spring]

Spring中Bean的作用

     在配置文件中定义Bean时,用户不但可以配置Bean的属性值以及相互之间的依赖关系,还可以定义Bean的作用。      作用将对Bean的生命周期和创建方式产生影响,在低版本的Spring中,仅有两个作用
http://www.itnose.net/detail/506236.html 2014-01-26 14:10   [Spring]

spring有singleton和prototype作用

spring有singleton和prototype作用,而且从spring2.0开始,又增加了三种作用,request、session、global session。session、global session的作用是HTTP session和全局
http://www.itnose.net/detail/9881.html 2013-12-30-18:48   [J2SE]

spring教程之四】spring中bean的作用

;); System.out.println(stage1.equals(stage2));//判断两个实例是否相同 } } 输出结果是:true。说明了在默认情况下,得到的bean类都是单例的。 3、当我们在xml中改变了bean的作用之后 <bean id="stage"
http://www.itnose.net/detail/6228715.html 2015-03-20 22:20   [Spring]

Spring - bean的作用与生命周期

bean的作用 【1】Singleton,默认值 容器初始时创建bean实例。在整个容器的生命周期内只创建这一个bean。 当一个bean的作用为singleton, 那么Spring IoC容器中只会存在一个共享的bean实例,并且所有对bean的请求,只要id与该bean定义相匹配,则只会
http://www.itnose.net/detail/6683046.html 2016-12-09 14:49   [Spring]

  1  2  3  4  5 下一页>