在spring 的以前版本中,只是支持singleton,prototype两种类型,
在2.0中作了很大的改进,增加了RequestScope,和SessionScope两种范围。当然也支持自定义Scope
下面简单介绍一下,spring2.0是如何支持自定义Scope的。
Scope接口,需要实现的接口,主要的方法:
- Object get(String name, ObjectFactory objectFactory)
- Object remove(String name)
- void registerDestructionCallback(String name, Runnable callback)
get 和remove这是最常用的方法,registerDestructionCallback用于回收对象时,可以异步调用其它操作。
下面简单定义一个Scope对象:
java 代码
- Scope scope = new Scope() {
- private int index;
- private List objects = new LinkedList(); {
- objects.add(new TestBean());
- objects.add(new TestBean());
- }
- public String getConversationId() {
- return null;
- }
- public Object get(String name, ObjectFactory objectFactory) {
- if (index >= objects.size()) {
- index = 0;
- }
- return objects.get(index++);
- }
- public Object remove(String name) {
- throw new UnsupportedOperationException();
- }
- public void registerDestructionCallback(String name, Runnable callback) {
- }
- };
如何使用让此scope生效,有两种方法:
第一编程实现:
java 代码
- ConfigurableBeanFactory 定义了关于Scope的一些方法:
- void registerScope(String scopeName, Scope scope);
- String[] getRegisteredScopeNames();
- Scope getRegisteredScope(String scopeName);
可以使用registerScope方法来注册相应的scope
java 代码
- applicationContext.getBeanFactory().registerScope("myScope", scope);
另外一种实现 xml 配置(建议使用)
通过CustomScopeConfigurer 来注册相应的Scope,由于CustomScopeConfigurer 实现了BeanFactoryPostProcessor,对于ApplcationContext,自动会实现相应的配置
xml 代码
- <bean id="myScope" class="MyScope"/>
- <bean id="customerScope" class="org.springframework.beans.factory.config.CustomScopeConfigurer">
- <property name="scopes">
- <map>
- <entry key="myScope">
- <bean class="myScope"/>
- </entry>
- </map>
- </property>
- </bean>
- <bean id="usesScope" class="org.springframework.beans.TestBean" scope="myScope"/>
当然也可以编程实现
java 代码
- Map scopes = new HashMap();
- scopes.put(this, new NoOpScope());
- CustomScopeConfigurer figurer = new CustomScopeConfigurer();
- figurer.setScopes(scopes);
分享到:
相关推荐
林信良著 spring2.0技术手册 《Spring 2.0技术手册》介绍了Spring 2.0的新特性,诸如Spring 2.0的新配置、新AOP支持、增强的IoC、JDBC和form标签等新功能。它通过实际完成一个完整的Spring项目示例,展示了与...
Spring 2.0 标准API 用处不大的资源我不发
Spring2.0jar包,J2EE项目中,用于集成的框架。
Spring 2.0 中文参考手册,Spring 2.0 中文参考手册,Spring 2.0 中文参考手册,Spring 2.0 中文参考手册Spring 2.0 中文参考手册,
本书介绍了Spring 2.0的新特性,诸如Spring 2.0的新配置、新AOP支持、增强的IoC、JDBC和form标签等新功能。它通过实际完成一个完整的Spring项目示例,展示了与Spring相关API的使用技巧,能够显著减少每一位入门者...
对于学习Spring2.0很好的指导作用,给初学者指明一个学习的方向和思路。
spring2.0jar包(一) spring2.0jar包(一) spring2.0jar包(一) spring2.0jar包(一) spring2.0jar包(一) spring2.0jar包(一) spring2.0jar包(一)
spring2.0 中文帮助文档 spring2.0 中文帮助文档 spring2.0 中文帮助文档 spring2.0 中文帮助文档 spring2.0 中文帮助文档
spring2.0 使用 Quartz 必备包 里面有: quartz-all-1.5.2.jar spring-support.jar 适合:SSH框架 spring2.0 strut2.0 hibernate3.2等
本书介绍了Spring 2.0的新特性,诸如Spring 2.0的新配置、新AOP支持、增强的IoC、JDBC和form标签等新功能。它通过实际完成一个完整的Spring项目示例,展示了与Spring相关API的使用技巧,能够显著减少每一位入门者...
SPRING2.0开发详解: 详细阐述了SPRING2.0的核心技术和框架整合能力
第1章认识Spring 第2章Spring入门 第3章Bean、消息、事件 第4章SpringAOP 第5章JDBC、事务支持 第6章Hibernate与Spring 第7章SpringWebMVC框架 第8章View层方案、Web框架整合 第9章API封装 第10章项目:...
spring2.0中文手册及使用指南,chm格式
Spring2.0中文教程
spring2.0中文文档
Spring2.0宝典全书源代码,作者李刚,随书所附的光盘
spring2.0中文参考手册.rar spring2.0中文参考手册.rarspring2.0中文参考手册.rar
本书介绍了Spring2.0的新特性,诸如Spring2.0的新配置、新AOP支持、增强的IOC、JDBC和form标签等新功能。它通过实际完成一个完整的Spring项目示例,展示了与Spring相关API的使用技巧,能够显著减少每一位入门者摸索...
全中文的SPRING2.0技术文档。
这是一个使用Spring2.0的MVC书写一个web应用。是学习spring2.0开发web应用的好例子。