赛迪网 > IT技术 Java > Java大图列表
  IT资讯搜索
 
IT产品搜索
[程序开发][网管世界][网络安全][数据库技术]
[操作系统][嘉宾聊天·在线访谈][活动集锦]
[精彩专题][Symantec专区][订阅IT技术周刊]
[开发论坛][网管论坛][安全论坛][数据库论坛]
[操作系统论坛][Sybase专区][IBM dW技术专区]
[病毒求助][病毒与漏洞播报][文档·源码下载]

关于spring 2.0自定义xml 标记

发布时间:2007.10.30 04:47     来源:赛迪网技术社区    作者:baocl

在spring 2.0 中,增加了自定义xml标记这一重大的功能。下面主要看一下spring 2.0实现这一功能的主要相关类:

NamespaceHandlerResolver(接口)
由DefaultBeanDefinitionDocumentReader使用,用于定位NamespaceHandler,指定特定的命名空间uri

实现类:
DefaultNamespaceHandlerResolver

通过map 保存所有的对应关系
默认使用spring.handlers文件来保存所有的handlers
可以定义其他的location 如:

String location = "org/springframework/beans/factory/xml/support/customNamespace.properties";
NamespaceHandlerResolver resolver = new DefaultNamespaceHandlerResolver(getClass().getClassLoader(), location);

NamespaceHandler(接口)

基础接口,用于DefaultBeanDefinitionDocumentReader处理自定义命名空间。
方法:
void init();
由DefaultBeanDefinitionDocumentReader调用在构造完后但在解析自定义元素前。

BeanDefinition parse(Element element, ParserContext parserContext);
解析指定的元素。

BeanDefinitionHolder decorate(Node element,
BeanDefinitionHolder definition,
ParserContext parserContext);
执行相应的修饰。

实现类:

NamespaceHandlerSupport(抽象类)

主要的三个方法:
protected final void registerBeanDefinitionDecorator(
String elementName,
BeanDefinitionDecorator decorator)
注册decorator,通过element

protected final void registerBeanDefinitionDecoratorForAttribute(
String attributeName,
BeanDefinitionDecorator decorator)
注册decorator,通过attr

protected final void registerBeanDefinitionParser(
String elementName,
BeanDefinitionParser parser)
注册BeanDefinitionParser,通过element

实际的操作由具体的BeanDefinitionDecorator 或者BeanDefinitionParser 执行

BeanDefinitionDecorator(接口)

装饰相关的自定义属性。

AbstractInterceptorDrivenBeanDefinitionDecorator
用于注册相应的Interceptor bean 定义,使用aop代理

其他类:

PluggableSchemaResolver,用于自定义相关的schema,默认的schema 保存于spring.schemas文件中

可以通过覆盖resolveEntity方法来装载相应的自定义xsd文件

主要的执行类:

XmlBeanDefinitionReader

用于处理相应的读取工作,其实主要的工作委派给BeanDefinitionDocumentReader

实际的类,就介绍到这,下一节通过实例来说明如何定义自定义xml 元素


[ 发表评论 ] 字体[  ] [ 打印 ] [ 进入博客 ] [ 进入论坛 ]  [ 推荐给朋友 ]
  相关文章
· Spring中IOC的实现 (10-29) · JAVA语言基础:Java 实现MVC模式的例子 (10-26)
· JAVA基础:简单介绍log4j一般的使用步骤 (10-26) · Java高级:J2ME平台中几个重要概念的说明 (10-26)
· JDK源码分析:java.lang.Boolean (10-26) · JAVA基础:Java多语言编码问题解析(2) (10-26)
· JAVA基础:Java多语言编码问题解析(1) (10-26) · JAVA基础:Java语言灵巧指针与垃圾回收 (10-26)
· 程序人生:告诉你怎样学Java才是硬道理 (10-26) · JAVA企业应用:软件工程之Java实现策略 (10-26)
  客户需求反馈表
* 姓  名:
更多资料  了解方案  认识厂商
* 单位名称:
* 联系电话:
* 电子邮件:
  赛迪推荐  
  手机·资费 ·新品·导购·评测·手机资费·宽带
手机搜索  诺基亚 N73 MOTO Z6
  IT产品 ·笔记本·台式机·服务器·打印·投影
IT产品搜索 
  IT技术 ·开发·网管·安全·数据库·操作系统
  信息化 ·热点·专题·访谈·周刊·方案案例
· 信息化市场百家争鸣 SaaS深陷争议“泥潭”
· 提高管理水平 "两栖"CIO应具备的六大能力
· 国产ITIL运维先行者 四大厂商角力BI市场
· 金融行业GSN专题解决方案 企业网解决方案
  IT博客 ·曾剑秋·项立刚·Java学习·网管
  IT技术论坛 ·开发·网管·安全·数据库·系统