spring2.0 自定义Scope
来源:互联网 发布:编程猫能加盟不 编辑:程序博客网 时间:2024/06/08 07:29
在spring 的以前版本中,只是支持singleton,prototype两种类型,
在2.0中作了很大的改进,增加了RequestScope,和SessionScope两种范围。当然也支持自定义Scope
下面简单介绍一下,spring2.0是如何支持自定义Scope的。
Scope接口,需要实现的接口,主要的方法:
下面简单定义一个Scope对象:
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生效,有两种方法:
第一编程实现:
ConfigurableBeanFactory 定义了关于Scope的一些方法:
void registerScope(String scopeName, Scope scope);
String[] getRegisteredScopeNames();
Scope getRegisteredScope(String scopeName);
可以使用registerScope方法来注册相应的scope
applicationContext.getBeanFactory().registerScope("myScope", scope);
另外一种实现 xml 配置(建议使用)
通过CustomScopeConfigurer 来注册相应的Scope,由于CustomScopeConfigurer 实现了BeanFactoryPostProcessor,对于ApplcationContext,自动会实现相应的配置
<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"/>
当然也可以编程实现
Map scopes = new HashMap();
scopes.put(this, new NoOpScope());
CustomScopeConfigurer figurer = new CustomScopeConfigurer();
figurer.setScopes(scopes);
在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)
下面简单定义一个Scope对象:
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生效,有两种方法:
第一编程实现:
ConfigurableBeanFactory 定义了关于Scope的一些方法:
void registerScope(String scopeName, Scope scope);
String[] getRegisteredScopeNames();
Scope getRegisteredScope(String scopeName);
可以使用registerScope方法来注册相应的scope
applicationContext.getBeanFactory().registerScope("myScope", scope);
另外一种实现 xml 配置(建议使用)
通过CustomScopeConfigurer 来注册相应的Scope,由于CustomScopeConfigurer 实现了BeanFactoryPostProcessor,对于ApplcationContext,自动会实现相应的配置
<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"/>
当然也可以编程实现
Map scopes = new HashMap();
scopes.put(this, new NoOpScope());
CustomScopeConfigurer figurer = new CustomScopeConfigurer();
figurer.setScopes(scopes);
- spring2.0 自定义Scope
- spring2.0 自定义Scope
- 详解spring2.0的scope
- 详解spring2.0的scope
- 详解spring2.0的scope
- spring2自定义标签
- spring2.x自定义标签
- spring scope自定义
- spring自定义scope
- spring的scope理解与自定义scope
- anglular 自定义指令scope =
- angularJS自定义指令:scope属性
- spring2.0升级到spring2.5
- spring2.0 , spring2.5的一些区别
- spring2.0与spring2.5的差别
- Spring2.0研究(一)
- spring2.0和AOP
- spring2.0学习一
- Java SE 中的技术
- J2EE 中的技术
- J2ME 中的技术
- 在线像册
- 如何提高自己的 Java 编程技能
- spring2.0 自定义Scope
- xmlize解析器
- 前期总结之jacob说明
- 使用Loadrunner测试Appeon Web应用时参数化的考虑
- 哦,2007年了~~
- J2ME 中的技术
- setup time and hold time
- vbs创建虚拟目录
- asp.net初学--页面调用和返回相关问题