本站首页    管理页面    写新日志    退出


«July 2025»
12345
6789101112
13141516171819
20212223242526
2728293031


公告
 本博客在此声明所有文章均为转摘,只做资料收集使用。

我的分类(专题)

日志更新

最新评论

留言板

链接

Blog信息
blog名称:
日志总数:1304
评论数量:2242
留言数量:5
访问次数:7570698
建立时间:2006年5月29日




[Spring]spring2.0 自定义Scope
软件技术

lhwork 发表于 2007/1/4 22:35:53

在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对象: 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);    


阅读全文(2785) | 回复(0) | 编辑 | 精华
 



发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.063 second(s), page refreshed 144768422 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号