閑人野居
          好好學習,天天向上
          posts - 57,  comments - 137,  trackbacks - 0
          ? 在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 元素






          posted on 2006-10-27 18:08 布衣郎 閱讀(755) 評論(0)  編輯  收藏 所屬分類: spring

          <2006年10月>
          24252627282930
          1234567
          891011121314
          15161718192021
          22232425262728
          2930311234

          常用鏈接

          留言簿(12)

          隨筆分類(59)

          隨筆檔案(57)

          blog

          java

          uml

          搜索

          •  

          積分與排名

          • 積分 - 357318
          • 排名 - 155

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 惠州市| 罗定市| 兴海县| 天祝| 胶州市| 高雄县| 阿巴嘎旗| 贞丰县| 桐梓县| 清远市| 耒阳市| 宜阳县| 介休市| 桃园县| 宜章县| 敖汉旗| 阳西县| 朝阳市| 伽师县| 昌邑市| 惠水县| 迁西县| 潮安县| 昭通市| 吉林市| 平湖市| 巴中市| 和政县| 磐石市| 濉溪县| 沂源县| 新化县| 临邑县| 隆安县| 光山县| 本溪市| 安平县| 大埔区| 英山县| 鄂伦春自治旗| 宁阳县|