| 
 
| 
 
 
 
 
 
 
| Blog信息 |  
| blog名称:日志总数:1304
 评论数量:2242
 留言数量:5
 访问次数:7644688
 建立时间: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() {
 &n
 |  
 |  
 
 
|  [Spring]关于spring 2.0自定义xml 标记 (二 如何实现) 软件技术
 lhwork 发表于 2006/12/30 10:13:32  |  
| 
| 看了spring test 用例,其实实现这一功能还算比较简单,主要分以下的步骤,具体的实例可以去参考spring 自带的testcase
首先定义相关xsd文件,用于验证相应的行为: 
 主要增加了4个自定义元素和1个属性:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <xsd:schema xmlns="http://www.springframework.org/schema/beans/test"
 &nb
 |  
 |  
 
 
|  [Spring]关于spring 2.0自定义xml 标记 (一 主要的相关类) 软件技术
 lhwork 发表于 2006/12/30 10:13:06  |  
| 
| 在spring 2.0 中,增加了自定义xml标记这一重大的功能。下面主要看一下spring 2.0实现这一功能的主要相关类: 
 NamespaceHandlerResolver(接口)
 由DefaultBeanDefinitionDocumentReader使用,用于定位NamespaceHandler,指定特定的命名空间uri
 
 实现类:
 DefaultNamespaceHandlerResolver
 
 通过map 保存所有的对应关系
 默认使用spring.handlers文件来保存所有的handlers
 可以定义其他的location 如:
 
 String location = "org/springframework/beans/factory/xml
 |  
 |  
 
 
|  [Spring]spring 2.0 关于事务的变化(主要为声明性事务) 软件技术
 lhwork 发表于 2006/12/30 10:12:13  |  
| 
| 在 1.x中,spring 的事务声明,一直是采用动态代理bean 实现的,也就是采用ProxyFactoryBean或者子类TransactionProxyFactoryBean来实现的 
 考虑下面的例子:(用1.x实现)
 <bean id="myTxManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
 &nbs
 |  
 |  
 
 
|  [Spring]spring aop 2.0 编程(三) 软件技术
 lhwork 发表于 2006/12/30 10:10:18  |  
| 
| 前面这是讲了许多的概念,下面以一个例子来说明: 一个很好理解的aop 例子,也就是日志服务。
 先从aop第一种方式来实现,也就是xml配置方式
 先创建基本的日志类:
 public class Logger {
    private static Log log = LogFactory.getLog(Logger.class);
    public void entry(String message) {
 log.info(message);
 }
 }
 这里只是简单的一个方法,当然实际情况可能不同。
 由于xml配置需要一个方面的实现bean
 所以创建一个简单的bean :
 public class LogBean {
    private Logger
 |  
 |  
 
 
 
 
 
 
 
 
 |