閑人野居
          好好學習,天天向上
          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 布衣郎 閱讀(760) 評論(0)  編輯  收藏 所屬分類: spring

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

          常用鏈接

          留言簿(12)

          隨筆分類(59)

          隨筆檔案(57)

          blog

          java

          uml

          搜索

          •  

          積分與排名

          • 積分 - 358028
          • 排名 - 156

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 横峰县| 青川县| 大兴区| 武胜县| 长顺县| 兴化市| 通江县| 拜泉县| 八宿县| 阿克| 承德市| 通州市| 桐乡市| 凌云县| 思南县| 明星| 英超| 虎林市| 阿拉善右旗| 神农架林区| 兴安县| 修水县| 大庆市| 泾川县| 双峰县| 建昌县| 松桃| 博爱县| 津南区| 富平县| 克山县| 大姚县| 牡丹江市| 阿拉善盟| 承德县| 望奎县| 莱芜市| 贵港市| 荔浦县| 共和县| 西乌|