spring IOC之Bean的scope属性值:prototype与singleton
http://gjdrift.diandian.com/post/2012-10-03/40040171461
如果在<bean>中指定Bean的作用范围为scope="prototype",将Bean返回给调用者,调用者负责Bean
后续生命的管理,spring不再管理这些Bean的生命周期.如果作用范围设置为scope="singleton",则将
Bean放入Spring IOC容器的缓存池中,并将Bean引用返回给调用者,spring继续对这些Bean进行后续
的生命管理.
默认属性是singleton
1.2. Bean以两种形态存在:singletons形式和prototypes形式。当bean以singletons形态存在时,BeanFactory只管理一个共享的实例。所有对这个特定bean的实例请求,都导致返回这个唯一bean实例的引用。
当bean以prototype形态存在时,每次对这个bean的实例请求都会导致一个新的实例的创建。当用户需要不受其他用户对象影响的对象或有类似的需求时,这是一个较理想的解决办法。
Bean默认是以singleton形态存在的,除非你另外显式加以指定。留神,当把bean的设置改为prototype模式时,每次对这个bean的实例请求都会导致一个新的bean实例被创建,而这可能并不是你所期望的。所以,只应该在确实需要的情况下把bean设置为prototype模式
3、request
request表示该针对每一次HTTP请求都会产生一个新的bean,同时该bean仅在当前HTTP request内有效,配置实例:
request、session、global session使用的时候首先要在初始化web的web.xml中做如下配置:
如果你使用的是Servlet 2.4及以上的web容器,那么你仅需要在web应用的XML声明文件web.xml中增加下述ContextListener即可:
<web-app>
...
<listener>
<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>
...
</web-app>
如果是Servlet2.4以前的web容器,那么你要使用一个javax.servlet.Filter的实现:
<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>
接着既可以配置bean的作用域了:
<bean id="role" class="spring.chapter2.maryGame.Role"scope="request"/>
4、session
session作用域表示该针对每一次HTTP请求都会产生一个新的bean,同时该bean仅在当前HTTP session内有效,配置实例:
配置实例:
和request配置实例的前提一样,配置好web启动文件就可以如下配置:
<bean id="role" class="spring.chapter2.maryGame.Role"scope="session"/>
5、global session
global session 作用域类似于标准的HTTP Session作用域,不过它仅仅在基于portlet的web应用中才有意义。Portlet规范定义了全局 Session的概念,它被所有构成某个 portlet web应用的各种不同的portlet所共享。在global session作用域中定义的 bean被限定于全局portlet Session的生命周期范围内。如果你在web中使用global session作用域来标识bean,那么 web会自动当成session类型来使用。
配置实例:
和request配置实例的前提一样,配置好web启动文件就可以如下配置:
<bean id="role" class="spring.chapter2.maryGame.Role"scope="global session"/>
分享到:
相关推荐
scope属性 名称: scope类型:属性 归属: bean标签 作用:定义bean的作用范围 格式: <bean scope=“singleton"></bean> 取值: singleton:设定创建出的对象保存在spring容器中,是一个单例的对象(bean默认是单例...
在Spring Framework中,IoC(Inversion of Control,控制反转)是核心概念之一,它使得应用程序的组件不再直接创建依赖对象,而是由Spring容器来管理和维护。BeanDefinition就是实现这一概念的关键元素,它包含了...
6. `@Value`:这个注解用于注入基本类型的值或从属性文件中读取的值。 7. `@Scope`:定义Bean的作用范围,如单例(`prototype`)或多例(`singleton`)。 8. `@PostConstruct` 和 `@PreDestroy`:这两个注解分别...
总结来说,Spring通过注解实现的IOC,主要包括了Bean的声明、依赖的自动装配、作用域的定义、生命周期方法的控制以及属性值的注入等功能。通过这些注解,开发者可以轻松地管理和控制应用程序中的对象,实现松散耦合...
4. `@Value`:用于注入基本类型的值或属性文件中的值。它可以注入到字段、方法参数或方法注解中。 5. `@Qualifier`:当有多个相同类型的Bean时,使用`@Qualifier`注解可以指定要注入的具体Bean。 6. `@...
6. **数据类型转换**:Spring提供了`BeanUtils`工具类,可以实现数据的自动类型转换,使得不同类型的属性值可以自动适配到Bean的相应属性。 7. **对象依赖**:对于依赖的处理,Spring会递归地创建和注入依赖的对象...
以上就是关于“简单手写springIOC注解模式”的主要知识点。通过这些注解,我们可以实现灵活、简洁的Spring应用配置,使得代码更加易于维护和扩展。在实际项目中,这些知识可以帮助我们更高效地构建和管理应用程序的...
在Spring框架中,IOC(Inversion of Control,控制反转)是一种设计模式,它允许容器管理对象的生命周期和依赖关系。自Spring 3.0版本起,Spring开始支持JSR 330(JavaTM Standard Edition (Java SE) Dependency ...
在Spring框架中,IOC(Inversion of Control,控制反转)是一种设计原则,它将对象的创建和管理交由容器处理,使得代码更加解耦、灵活。基于注解的配置是Spring实现IOC的一种方式,它减少了XML配置文件的使用,提高...
5. **Properties**:属性注入的一种方式,主要用于非必填的依赖项或者简单的值注入。 6. **Autowiring-mode**:定义了如何自动装配Bean。Spring支持按类型、按名称等多种自动装配模式。 7. **Lazy-initialization-...
Spring的BeanDefinition是用来存储Bean的配置信息,包括Bean的类名、作用域、属性值、依赖的其他Bean、是否为单例、是否延迟加载等。这些信息在容器启动时解析并转化为BeanDefinition对象,后续的Bean实例化和管理都...
3. **依赖注入**:这是IOC的核心,Spring4通过构造器注入、设值注入和接口注入三种方式实现。开发者无需在代码中硬编码依赖,而是由Spring容器负责管理。 4. **Scope**:讨论Bean的作用域,包括singleton(单例)、...
19、spring支持集中beanscope? Spring支持以下Bean作用域: - singleton:默认作用域,在Spring IoC容器中只有一个实例。 - prototype:每次请求都会创建一个新的Bean实例。 - request:每次HTTP请求都会创建一个新...
5. `@Value`:可以用来注入基本类型的值或者从配置文件中读取的属性值。 6. `@Scope`:定义bean的作用域,例如单例(`@Scope("singleton")`)或多例(`@Scope("prototype")`)。 **Spring容器** Spring容器是IoC的...
Bean元素有一个scope属性,用于定义Bean的作用域,该属性有如下五个值: 1>singleton: 单例模式,在整个spring IOC容器中,单例模式作用域的Bean都将只生成一个实例。一般Spring容器默认Bean的作用域为singleton ...
XML配置文件中可以使用scope属性指定Bean的作用域,该属性可以接受singleton、prototype、request、session、globalSession五个值。 Spring容器中Bean知识点总结了Bean的基本定义、Bean的作用域和Bean的生命周期三...
2. 解析bean定义:`BeanDefinitionReader`负责读取XML中的bean定义,`BeanDefinitionParser`解析每个`<bean>`标签,生成包含属性(如class、scope、dependencies等)的`BeanDefinition`。 3. 注册bean定义:解析后...
4. **Spring_0600_IOC_Bean_Scope**: Spring提供了多种bean的作用域,包括单例(Singleton)、原型(Prototype)、会话(Session)和请求(Request)等。理解每种作用域的特点及其应用场景对于优化应用性能和设计...