主要观点:Spring 2.x 时代的一个优点是支持自定义 XML,Spring 自身通过此方式添加了各种新标签,如<util:list>和<mvc:annotation-driven>。文中通过一个示例应用展示了如何使用自定义 XML 构建动态 Swing 菜单,同时介绍了 Spring 自定义 XML 的工作原理及相关文件。
关键信息:
- Spring 需通过
META-INF/spring.schemas验证和解析 XML,META-INF/spring.handlers查找处理程序。 - 示例应用包含
spring.schemas、spring.handlers、MenuNamespaceHandler、MenuDefinitionParser等部分。 - 自定义 XML 允许
<menu>元素任意嵌套,命名空间处理程序为MenuNamespaceHandler,解析器MenuDefinitionParser处理 XML 元素并创建 Spring bean 定义。 - 可在 Spring 配置文件中自由混合使用自定义 XML 和标准 Spring XML,还能引用普通 Spring bean。
重要细节:
spring.schemas匹配类路径上的文件,spring.handlers指向处理类。- 解析器中处理嵌套元素需递归,创建 Spring bean 定义时不直接创建
MenuItem对象,而是使用rootBeanDefinition()。 - 引用单个 Spring bean 使用
addPropertyReference(),管理 Spring bean 定义列表使用addPropertyValue()。 - 示例中通过
ClassPathXmlApplicationContext加载解析后的 XML 到 Spring 应用上下文中,可获取相应的 bean。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。