閑人野居
          好好學習,天天向上
          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

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 潼关县| 乌恰县| 逊克县| 沂源县| 城步| 株洲县| 揭阳市| 江油市| 犍为县| 梁山县| 汝南县| 平潭县| 镇赉县| 同仁县| 长沙市| 昌黎县| 麻栗坡县| 杂多县| 汝州市| 宣城市| 班玛县| 东丰县| 长宁县| 靖宇县| 方城县| 盐边县| 同心县| 和林格尔县| 牟定县| 合作市| 凤城市| 许昌县| 广安市| 仁化县| 汉寿县| 青浦区| 镇赉县| 武功县| 来凤县| 吉林市| 庆城县|