主要观点: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) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。